我用推送通知设置创建了ios应用程序,每个人都可以在我的应用程序中与其他人聊天,我将解决一些问题:
1)已解决:当应用程序未处于活动状态但仍在后台运行(不是全部退出)时,我可以处理推送通知并保存到数据库(SQLite)代码中:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
//some code here
}
2)已解决:当用户完成退出我的应用程序,新消息崩溃并且用户点击通知气球并且用户可以阅读新消息,为此我将使用此代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
/* this code working when application not running */
NSDictionary *remoteNotif = [launchOptions objectForKey: UIApplicationLaunchOptionsRemoteNotificationKey];
if(remoteNotif)
{
[self handleRemoteNotification:application userInfo:remoteNotif];
return YES;
}
return YES;
}
3未解决,我的问题需要帮助
请帮忙
答案 0 :(得分:3)
如果您的应用未运行且用户点击了推送通知以打开它,您可以使用application:didFinishLaunchingWithOptions
方法获取有关此通知的数据。
如果您的应用不是最前端或未运行,则可以通过检查传递给应用代表的application:didFinishLaunchingWithOptions:的选项字典来处理通知,以获取UIApplicationLaunchOptionsLocalNotificationKey或UIApplicationLaunchOptionsRemoteNotificationKey密钥。
但是,如果收到通知时应用未运行且点击此通知从未打开该应用,则您 将无法获取其数据。
除了推送通知只是(参见下面的注释)这一事实,我们应该总是有另一种方法来获取信息(就像Chetan所说的那样)。所以绝不仅仅依靠推送。
重要提示:提供通知是“尽力而为”,无法保证。它不是为了向您的应用提供数据,而是为了通知用户有新数据可用。
答案 1 :(得分:0)
如果仍然没有解决,请回答你的3子弹。 iOS 7.0及更高版本中有一种方法可以发送通知并访问其内容,而无需用户点击它。 因此,您发送的通知有效内容有一个名为 content-available 的参数。您可以在以下链接中查看有效负载parmaters: 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字典来获取通知数据。