【发布时间】:2015-10-14 05:19:01
【问题描述】:
我为我的应用集成了推送通知。为了捕捉通知,我使用了这个委托。
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo在我的应用委托中。
所以当应用程序在后台运行时,如果通知来了,当我点击它时,这个委托就会触发。如果应用程序即使在后台也没有运行,如果点击 ntification 然后它会触发
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
到目前为止,它运作良好。然后我想在后台捕捉通知。于是我找到了
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
这对它有用。
所以我只是将我以前的didReceive 方法更改为这个新的didReceive 方法。现在我的问题是当应用程序通过推送通知启动时(如果应用程序没有在后台或前台运行并且当点击通知时)我的应用程序崩溃了。即使我无法调试和捕捉这种情况。
这两个代表之间有什么区别。当应用程序启动并带有通知时,我的第二个代表会触发吗?请帮帮我。
【问题讨论】:
-
检查一次有效载荷是否正确序列化
-
我有几种通知类型。如果通知类型是 12,我只需要在后台做一些事情。所以我添加了 'content-available key $body['aps'] = array('alert' => $message, 'sound' => 'default', 'badge' => 1, 'content-available'=>1 );如果我的通知类型是 12 content-available 在所有其他时间变为 0
-
看看这个答案,可能会有帮助stackoverflow.com/a/20851481/3743322
标签: ios objective-c push-notification apple-push-notifications