您好我正在开发我正在使用推送通知的小型IOS应用程序。所以在我的情况下,我能够收到通知,我也能够访问数据以进行通知。来自通知的数据意味着标题,描述等。所以在我的情况下,我不是在服务器端保存我的通知。我想在本地保存。为此,我想在通知到来之后立即将数据保存在本地。当应用程序处于前台时,我能够访问我的数据,但当应用程序处于后台时,我无法访问我的通知数据。我想访问通知数据,以便我可以保存它。对于通知,我做了以下事情:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[application registerForRemoteNotificationTypes:
UIRemoteNotificationTypeBadge |
UIRemoteNotificationTypeAlert |
UIRemoteNotificationTypeSound];
[[UIApplication sharedApplication] setApplicationIconBadgeNumber: 0];
[[UIApplication sharedApplication] cancelAllLocalNotifications];
return YES;
}
- (void)application:(UIApplication *)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)newDeviceToken {
}
- (void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo {
for (NSString *key in [userInfo allKeys])
{
NSString *data = [userInfo objectForKey:key];
NSLog(@"inside did register for notification .... %@ ---- > %@",key,data);
}
}
我的要求很简单我希望在我的应用处于后台时访问通知。谁在这里谁已经这样做了?需要帮忙。谢谢。
答案 0 :(得分:2)
在iOS中,应用无法访问推送通知,直到用户点击通知中心的推送通知为止。
点击推送通知并且应用加载/变为活动状态后,您才能访问推送通知。
仅供参考:
-didReceiveRemoteNotification:
方法访问内容。 -didFinishLaunchingWithOptions:
参数中的launchOptions
方法访问内容。此外...推送通知不是100%可靠。它们可能会也可能不会被递送(虽然它们在我的观察中并不是很少见,但值得指出)
答案 1 :(得分:1)
iOS 7.0及更高版本中有一种方法可以发送通知并访问其内容,而无需用户点击它。 因此,您发送的通知有效内容有一个名为 content-available 的参数。您可以在以下链接中查看有效负载参数: https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/ApplePushService.html
因此,当您将内容可用设置为 1 并发送通知时,即使应用不在后台或前台,iOS也会调用以下功能(必须具有启用远程通知)
- (void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo
fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))handler
然后,您可以使用userInfo字典来获取通知数据。