在后台模式下不调用didReceiveRemoteNotification
我正在推送通知,我收到的数据是JSON格式。 如何parsing显示在下面的通知中心的JSON数据:
如果你的应用程序在后台/前台模式下调用这个方法
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler
如果您使用上述方法,您将在控制台中遇到以下错误
应用程序:didReceiveRemoteNotification:fetchCompletionHandler:],但是您仍然需要将“远程通知”添加到Info.plist中支持的UIBackgroundModes的列表中。
解决这个问题
按照步骤的形象
如果您的应用程序在前景模式下调用此方法
- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo
selectno-2
- (void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { UIApplicationState state = [application applicationState]; // user tapped notification while app was in background if (state == UIApplicationStateInactive || state == UIApplicationStateBackground) { // go to screen relevant to Notification content } else { // App is in UIApplicationStateActive (running in foreground) // perhaps show an UIAlertView } }
迅速
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) { var state: UIApplicationState = application.applicationState() // user tapped notification while app was in background if state == .Inactive || state == .Background { // go to screen relevant to Notification content } else { // App is in UIApplicationStateActive (running in foreground) // perhaps show an UIAlertView } }
如果didReceiveRemoteNotification方法在后台模式下不被调用,请按照以下步骤操作
首先打开推送通知并勾选目标function中背景模式的远程通知checkbox
然后
-(void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { if( [UIApplication sharedApplication].applicationState == UIApplicationStateInactive ) { NSLog( @"INACTIVE" ); } else if( [UIApplication sharedApplication].applicationState == UIApplicationStateBackground ) { NSLog( @"BACKGROUND" ); } else { NSLog( @"FOREGROUND" ); } return YES; }