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

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

我已经为我的应用程序集成了推送通知。为了捕捉通知,我使用了这个委托(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/

相关文章:

iOS 将文件行读入数组

ios - 将 subview 添加到 UITabBarController 不调用 viewWillAppear

objective-c - 在 Objective-C 中获取返回对象的类

iOS : subview of a button not showing up

objective-c - didRegisterForRemoteNotificationsWithDeviceToken 未在 ios10 上调用

javascript - 无法堆叠多个推送通知

ios - 验证返回码 : 20 (unable to get local issuer certificate) while creating push notification P EM file

ios - 如何设置 Google Places API for iOS 的结果语言 (en)?

ios - 在 AVSpeechSynthesizer 话语中强制暂停的简单方法?

objective-c - 防止 AlertView 解雇