[读后感]思考于“关于socket voip后台保持长连被苹果拒了”

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es)

本文遵循“署名-非商业用途-保持一致”创作公用协议

转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作。

从以下来看,苹果现在已经从技术层面走出来,开始向内容的审核大踏步前进。

所以,还有想偷机取巧的兄弟,您还是小心为妙。

说来,在后台保持长链接,无非是能给予服务端一个直接向客户端通讯的通道而已,这种实时的方式虽好,但苹果更关注用户体验与用户隐私。

想来,对客户端的标识,并非直连这一种方式,虽然UDID不允许使用了,但苹果官方建议的 UUID 唯一生成标识的方法,也很不错的。

一个应用安装到一个设备上,第一次运行,就自动生成此 UUID,存储于沙盒之中,这足以唯一标识一台设备,更确切地说,标识一台设备上的该应用。

而登录验证,是一种使用该应用的鉴权方式,它并不能标识当前设备。

由设备标识和用户信息组合,就能充分地确定哪个用户在哪台设备上登录使用本应用,这应该是完整鉴权,包括后续的生命周期管控。

相对 Android 来讲,苹果更适合短链接的无状态交互管理,每一次的网络请求,均有应答返回,完成一次网络交互;请求带着来源标识:设备标识和用户标识;

如果想避开 UUID 这个大长串,那么,把你的乱七八槽的东西放到自动存包柜里,拿到一个存包柜的编号就好了,要用的时侯,直接拿这个编号去取不会出现差错,因为存包柜统一发放编号,而且数位也就两三位而已,想必 UUID 再缩也小不到这个程度。

下面是译文和回复,都很精典,再往下是原文,标题的链接。

部分译文如下:

我们发现您的应用使用了后台模式,但并未包含任何需要该模式持久运行所对应的功能。该行为与 苹果商店审查指导方针不相容。

我们注意到,您的应用在  Info.plist 文件中 UIBackgroundModes  键里声明了支持 VOIP ,但未提供任何 VOIP 服务。

回复摘要:

关于socket voip后台保持长连被苹果拒了

----- 2.16 -----

We found that your app uses a background mode but does not include functionality that requires that mode to run persistently. This behavior is not in compliance with the App Store Review Guidelines.

We noticed your app declares support for VoIP in the UIBackgroundModes key in your Info.plist but does not provide any Voice over IP services.

We recognize that VoIP can provide "keep alive" functionality that many app features would like to use. However, using VoIP in this manner is not the intended purpose of VoIP, which, as indicated in the iOS Application Programming Guide, is that: "A Voice over Internet Protocol (VoIP) application allows the user to make phone calls using an Internet connection instead of the device‘s cellular service."

It would be appropriate to add VoIP features or remove the "VoIP" setting from the UIBackgroundModes key.

时间: 2024-11-14 11:28:43

[读后感]思考于“关于socket voip后台保持长连被苹果拒了”的相关文章

iOS socket保持后台连接 ios9.0 xcode8.0

本教程是基于AsyncSocket库的简单开发! socket机制今天就不说了,毕竟百度上太多太详尽了! 1.先new一个工程: ?2.要写socket的界面遵循<</span>AsyncSocketDelegate>代理方法:?如图 遵循代理方法 3.创建全局的服务发送端:如图 服务端 ?4.在viewDidLoad里实例化服务器对象并绑定端口号: 服务端实力方法 ?这里需要注意的是:端口最大为65535  其中端口建议设置为5000以上,另外还有一些特殊端口,例如8080端口为

(七十四)iOS8之前使socket可以后台运行的方法

对于使用socket通信的应用程序,常常希望App位于后台时仍然可以进行网络通信,这在iOS8和以后的版本是被默认允许的,socket可以直接在后台运行,而对于iOS8之前的版本就不行,需要进行两步设置使得socket后台运行. 这里以XMPP的socket为例,为了实现后台接收到消息后发送推送通知,需要以下两步设置: ①打开info.plist,添加下面的键值对: Required background modes = App provides Voice over IP services ②

vue中使用socket连接后台

1.需求背景 工程车巡检,实时发送巡检位置信息.现场状况到服务器,页面实时显示工程车位置以及状况信息 2.VUE中使用socket建立实时连接 3.mounted生命周期中初始化连接 mounted () {this.initWebSocket() }, 4.socket连接方法 /** * 建立socket连接,调用时间: * 1.首次进入页面,如果不是查看记录,请求出来初始数据后,建立socket连接 * 2.调用数据库查询完毕后 * */ initWebSocket() { //初始化we

iOS 后台保持长连接

工程中使用tcp长连接来和服务端进行数据传输,在IOS平台上,由于苹果的后台机制,会有以下问题: 当程序退到后台的时候,所有线程被挂起,系统会回收所有的socket资源,那么socket连接就会被关闭,因此无法再进行数据的传输: 解决方法: 通过设置以下属性可以保持socket连接和数据的继续传输 1.需要在Info.plist文件中添加UIBackgroundModes中的VOIP键值: 2.设置流属性 CFReadStreamRef和CFWriteStreamRef通过如下方法设置kCFSt

socket短连接、长连接

通常短连接是这样:连接->传输数据->关闭连接那什么是长连接?一般长连接相对短连接而言的,长连接在传输结束后不关闭连接,而不断的发送包保持连接等待处理下一个数据包. 一般长连接用于少数client-end to server-end的频繁的通信,例如:数据库的连接用长连接,如果用短连接频繁的通信会造成socket错误,而且频繁的socket创建也是对资源的浪费.而像WEB网站的http服务一般都用短链接,因为长连接对于服务端来说会耗费一定的资源,而像WEB网站这么频繁的成千上万甚至上亿客户端的

关于iOS后台问题( 一 )(ios后台刷新,后台定位,后台下载,真后台)

关于iOS的后台,以下引用一些文段进行一下脑补,请同学们大致看一下,有个基础,原文出处 ----------------------------------------------------------------------------------------------- OS 7中,实际上APP拥有四种后台模式,无论是哪一种后台机制,均需要利用苹果给予的相应后台接口实现.IOS7系统中,开发者可以灵活利用多种后台接口(API)实现更加智能的应用操作.一,无后台仅推送第 一种后台方式为传统

写自己的Socket框架(一)

本系列仅介绍可用于生产环境的C#异步Socket框架,如果您在其他地方看到类似的代码,不要惊讶,那可能就是我在参考开源代码时,直接“剽窃”过来的. 1.在脑海里思考一下整个socket的链接的处理流程,于是便有了下图. 2.首先就开始监听,代码如下: public override bool Start() { this._socket = new System.Net.Sockets.Socket(AddressFamily.InterNetwork, SocketType.Stream, P

IOS研究之IOS7四种后台机制

 IOS 7中,实际上APP拥有四种后台模式,无论是哪一种后台机制,均需要利用苹果给予的相应后台接口实现.IOS7系统中,开发者可以灵活利用多种后台接口(API)实现更加智能的应用操作.对获取开机累计时间不了解的看NSProcessInfo获取系统开机累计时间 一,无后台仅推送 第一种后台方式为传统的无后台操作,仅有苹果推送机制,这种方式出现在iOS 3.x以下的大部分系统版本上.这个方式下,应用在按下Home键后即会关闭退出,其数据通过苹果搭建的推送服务器传输,并不需要应用后台运行.这种方

ios8新特性:pushkit实战总结(voip开发者必读)

Question:pushkit是什么? Answer:ios8苹果新引入了名为pushkit的框架和一种新的push通知类型,被称作voip push.该push方式旨在提供区别于普通apns push的能力,通过这种push方式可以使app执行制定的代码(在弹出通知给用户之前):而该通知的默认行为和apns通知有所区别,它的默认行为里面是不会弹出通知的.目前来看push kit的用途还局限于voip push(根据笔者的实战经验来看,其他类型的push暂时不能够起作用,sdk也正处于演进中)