使用推送通知启动时应用程序崩溃

时间:2015-10-14 05:19:02

标签: ios objective-c push-notification apple-push-notifications

我已经为我的应用集成了推送通知。为了捕获通知,我使用了这个代理。

我的app委托中的

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo

因此,当应用程序在后台运行时,如果通知发出,当我点击它时,这个委托会激活。如果应用程序即使在后台运行也没有运行,如果单击ntification则会触发

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

Sofar效果很好。然后我想在后台捕捉通知。所以我找到了

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler

这适用于它。

所以我只是将之前的didReceive方法更改为这个新的didReceive方法。现在我的问题是当应用程序启动推送通知时(如果应用程序不在后台或前台运行,并在点击通知时),我的应用程序崩溃。即使我无法调试并抓住这种情况。

这两位代表之间有什么区别。当应用程序启动时,我的第二位代表会发出通知吗?请帮帮我。

1 个答案:

答案 0 :(得分:1)

通常在收到通知时会执行此方法(当应用处于活动状态时) - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo

但是如果应用程序被系统关闭或杀死,那么点击notificatin首先调用" didFinishLaunchingWithOptions"方法 我的方法,我们必须检查从应用程序开始通知或重新开始,我们可以使用此代码调用" didReceiveRemoteNotification"方法再次

UILocalNotification *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];

if (notification) {
    [self application:application didReceiveRemoteNotification:(NSDictionary*)notification];
}