我已经为我的应用程序集成了推送通知。为了捕捉通知,我使用了这个委托(delegate)。
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
在我的应用委托(delegate)中。
所以当应用程序在后台运行时,如果收到通知,当我点击它时,这个委托(delegate)就会触发。如果应用程序甚至没有在后台运行,如果点击 ntification 则它会触发
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
到目前为止,它运行良好。然后我想在后台捕捉通知。于是我找到了
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
这对它有用。
所以我只是将以前的didReceive
方法更改为这个新的didReceive
方法。现在我的问题是当应用程序通过推送通知启动时(如果应用程序不在后台或前台运行并且当通知出现时单击)我的应用程序崩溃。即使我无法调试并捕捉到这种情况。
这两个代表有什么区别。当应用程序启动并发出通知时,我的第二个代表会触发吗?请帮助我。
最佳答案
通常当通知到来时执行此方法(当应用程序处于事件状态时) - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
但是如果应用程序被系统关闭或杀死然后点击通知首先调用“didFinishLaunchingWithOptions”方法 在这个方法中,我们必须检查应用程序是从通知启动还是重新启动,我们可以使用此代码再次调用“didReceiveRemoteNotification”方法
UILocalNotification *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (notification) {
[self application:application didReceiveRemoteNotification:(NSDictionary*)notification];
}
关于ios - 使用推送通知启动时应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33117131/