9

不推荐使用的 iOS9 状态的当前 API 更改-setKeepAliveTimeout:handler:

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

LinPhone 等各种应用程序都使用这种技术。

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

请参阅: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

4 回答 4

0

Apple 在您链接的页面中记录替代方案:

讨论

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

于 2015-06-10T13:57:29.507 回答
0

来自 Apple 的文档:

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

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

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

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

来自苹果文档:

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

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

最后(用于取消注册):

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

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

问候,

海德·萨蒂

于 2015-10-13T11:58:05.100 回答
0

看来您必须通过注册https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UIApplication_Class/index.html#//apple_ref将信号事件泄露给苹果推送通知服务器/occ/instm/UIApplication/registerForRemoteNotifications

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

因此,这意味着您必须将事件已到达您的应用程序的信息泄露给苹果服务。您可能只需向您的应用程序发送一个“唤醒”通知,然后自己处理加载事件类型 - 但这可能会导致过多的延迟,因此您可能需要将更多的信号信息泄漏给苹果服务。:-/

于 2015-09-04T20:52:15.290 回答
0

如果我们集成 PUSHKIT,它将处理有关唤醒应用程序的所有事情。如果您在通过 PUSHKIT 收到带有推送通知的 VoIP 呼叫时发送推送通知,它会在其处于后台状态时工作。我也做过同样的事情。

我希望这能帮到您。

于 2016-09-22T12:10:24.487 回答