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

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

– (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfoin我的app delegate.

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

– (BOOL)应用程序:(UIApplication *)应用程序didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

Sofar它工作得很好.然后我想在后台捕捉通知.所以我找到了

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

这适用于它.

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

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

最佳答案 通常在发出通知时,此方法将执行(当应用程序处于活动状态时)

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

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

UILocalNotification *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];

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