【发布时间】:2015-07-29 17:11:53
【问题描述】:
感谢 PushKit,即使关闭,我的 iOS 应用程序也能成功接收 VoIP 推送通知。失败只有一个条件:
如果我通过标准任务切换器将我的应用程序滑出(终止)并重新启动我的设备。
起初,我只是在重新启动设备后遇到了这个问题,如以下问题所述:Troubleshooting post-boot push notification delivery failures 后台任务 hack 帮助了我,非常感谢作者,可惜我无法添加任何分数。
现在我被这个问题困住了。通知不会到达,因为如果用户在重启他/她的设备之前终止了应用程序,则在设备启动时根本不会调用 didFinishLaunchingWithOptions。
检查我的应用的后台功能:
- IP 语音
- 远程通知
这是我的代码 sn-p:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
PKPushRegistry *pushRegistry = [[PKPushRegistry alloc] initWithQueue:dispatch_get_main_queue()];
pushRegistry.delegate = self;
pushRegistry.desiredPushTypes = [NSSet setWithObject:PKPushTypeVoIP];
self.backgroundTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
[[UIApplication sharedApplication] endBackgroundTask:self.backgroundTask];
self.backgroundTask = UIBackgroundTaskInvalid;
}];
return YES;
}
- (void)pushRegistry:(PKPushRegistry *)registry didUpdatePushCredentials:(PKPushCredentials *)credentials forType:(NSString *)type {
[[UIApplication sharedApplication] endBackgroundTask:self.backgroundTask];
self.backgroundTask = UIBackgroundTaskInvalid;
NSLog(@"Push token received, probably!");
}
【问题讨论】:
-
您是否已经找到了解决方案?我遇到了同样的问题:(
-
不,我没有。我迟早要面对它。我需要 VoIP 通知的原因是因为我需要我的应用程序在向用户显示一些有用的消息之前处理数据。在用户看到它们之前不会触发任何处理程序的简单通知对我来说根本不起作用。
-
你们有解决方案吗?我现在也面临同样的问题。
-
@AnilkumariOSdeveloper,你有什么解决办法
-
快 4 年过去了,我认为事情会发生巨大的变化并且是好的,但没有。目前,在我的最新解决方案中,我正在使用 FCM 测试通知,该通知在 Android 上运行良好。那么iOS呢?好吧,我希望两者都使用 FCM,但似乎苹果仍然存在关闭应用程序的问题,如果用户关闭应用程序,这些应用程序根本不会进行后台提取。这将我们带回到 VoIP 通知,但 FCM 不支持 VoIP 证书!再一次,4 年后,iOS 通知是如此痛苦!
标签: ios ios8 apple-push-notifications ios-frameworks