在iOS9中不推荐使用setKeepAliveTimeout

时间:2015-06-10 13:53:06

标签: registration sip voip keep-alive ios9

iOS9的当前API更改状态{@ 1}}已弃用。

到目前为止,这是iOS上的VoIP SIP应用程序可以维持其在SIP服务器上注册的唯一方式。

这种技术被LinPhone等其他应用程序使用。

有人对Apple提出的替代方案有看法吗? 或者,从(后)iOS9开始,SIP是否会瘫痪?

请参阅:https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UIApplication_Class/index.html#//apple_ref/occ/instm/UIApplication/setKeepAliveTimeout:handler

http://www.linphone.org/docs/liblinphone/group__IOS.html

4 个答案:

答案 0 :(得分:0)

Apple会在您关联的页面中记录替代方案:

  

<强>讨论

     

在iOS 8及更高版本中,IP语音(VoIP)应用注册UIRemoteNotificationTypeVoIP远程通知,而不是。{   使用这种方法。

答案 1 :(得分:0)

您似乎必须通过注册https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UIApplication_Class/index.html#//apple_ref/occ/instm/UIApplication/registerForRemoteNotifications将信令事件泄漏到Apple推送通知服务器。

这很不幸,但似乎不可避免。这背后的想法可能是通过减少手机上的活动网络连接来节省电池电量。

因此,这意味着您必须将事件已到达应用程序的信息泄露给Apple服务。你可能只是发送一个&#39;唤醒&#39;通知您的应用程序,然后自己处理加载事件类型 - 但这可能会产生太多的延迟,因此您可能需要将更多的信令信息泄漏给Apple服务。 : - /

答案 2 :(得分:0)

来自Apple的文档:

  

在iOS 8及更高版本中,IP语音(VoIP)应用注册registerForRemoteNotifications远程通知,而不是使用此方法。使用远程通知消除了使用VoIP服务签入的超时处理程序的需要。相反,当呼叫到达用户时,VoIP服务向用户的设备发送VoIP远程通知。收到此通知后,设备会根据需要启动或唤醒应用程序,以便它可以处理来电。

过去,setKeepAliveTimeout调用用于允许处理程序被调用为结束时间并且最多有10秒退出或被强制终止,也不保证对处理程序的调用也在超时值。

新的(registerForRemoteNotifications)可以使用,因为处理程序是内部的(对IOS)并且当远程事件发生时会反过来调用你的应用程序(如果它处于睡眠状态,这甚至会唤醒你的应用程序) 。

无论哪种方式,两者都应该做同样的事情,你将处理代码的旧版本,以及新版本,你会收到通知(也在某处处理),但你将不再控制超时。

来自Apple文档:

  

调用此方法以使用Apple推送通知服务启动注册过程。如果注册成功,应用程序将调用您的app委托对象的应用程序:didRegisterForRemoteNotificationsWithDeviceToken:方法并将其传递给设备令牌。您应该将此令牌传递给用于为设备生成远程通知的服务器。如果注册失败,应用程序将调用其app delegate的应用程序:didFailToRegisterForRemoteNotificationsWithError:method。

如果您希望应用的远程通知显示警报,播放声音或执行其他面向用户的操作,则必须调用registerUserNotificationSettings:方法来请求您要使用的通知类型。如果您不调用该方法,系统会以静默方式向您的应用程序发送所有远程通知。由于注册过程会考虑用户的首选通知设置,因此请求访问面向用户的通知类型也不能保证它们将被授予。要找出可用的通知设置,请​​使用currentUserNotificationSettings方法。

最后(取消注册):

  

您应该在极少数情况下调用此方法,例如当新版本的应用程序删除对所有类型的远程通知的支持时。用户可以通过“设置”应用的“通知”部分暂时阻止应用接收远程通知。通过此方法取消注册的应用程序始终可以重新注册。

不确定,但我希望这有帮助。

此致

Heider Sati

答案 3 :(得分:0)

如果我们整合PUSHKIT,它会处理关于唤醒应用程序的所有事情。如果您通过PUSHKIT通过推送通知获取VoIP呼叫时发送推送通知,则它将在后台状态下工作。我做了同样的事情。

我希望这会对你有所帮助。