应用程序终止并重启设备后,PushKit通知未到达

时间:2015-07-29 17:11:53

标签: ios ios8 apple-push-notifications ios-frameworks

由于PushKit,我的iOS应用程序即使关闭也会成功接收VoIP推送通知。失败时只有一个条件:

如果我通过标准任务切换器刷出我的应用程序(终止)并重新启动我的设备。

首先,我在重新启动设备后遇到了此问题,如此问题中所述:Troubleshooting post-boot push notification delivery failures 一个后台任务黑客帮助了我,非常感谢作者,太糟糕了,我无法添加任何分数。

现在我遇到了这个问题。通知不会到达,因为如果用户在重启他/她的设备之前终止应用程序,则在设备启动时根本不会调用didFinishLaunchingWithOptions

我的应用程序的背景功能已被检查:

  • IP语音
  • 远程通知

这是我的代码片段:

- (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!");
}

1 个答案:

答案 0 :(得分:0)

我没有得到任何解决方案但是我确实设法通过我的应用程序来完成要求,这个问题不是一个大问题。我确实感觉iOS是这样设计的,如果用户关闭你的应用程序,那么即使在后台也应该没有任何可以启动你应用程序的静音。 当然,我可能错了,现在很久没与iOS合作了,我相信很多事情都发生了变化。 请随意证明我的错误,并描述iOS平台上是否总有适当的解决方案,或者现在可以找到解决此问题的一些新方法。