iOS获取通知须要注意如下三个地方iOS 设备收到一条推送(APNs),用户点击推送通知打开应用时,应用程序根据状态不一样进行处理需在 AppDelegate 中的如下两个方法中添加代码以获取apn内容app
若是 App 状态为未运行,此函数将被调用,若是launchOptions包含UIApplicationLaunchOptionsRemoteNotificationKey表示用户点击apn 通知致使app被启动运行;若是不含有对应键值则表示 App 不是因点击apn而被启动,可能为直接点击icon被启动或其余。函数
(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions; // apn 内容获取:NSDictionary *remoteNotification = [launchOptions objectForKey: UIApplicationLaunchOptionsRemoteNotificationKey]
基于iOS 6 及如下的系统版本,若是 App状态为正在前台或者点击通知栏的通知消息,那么此函数将被调用,而且可经过AppDelegate的applicationState是否为UIApplicationStateActive判断程序是否在前台运行。此种状况在此函数中处理:fetch
(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo; // apn内容为userInfo
基于iOS 7 及以上的系统版本,若是是使用 iOS 7 的 Remote Notification 特性那么处理函数须要使用rem
(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler; // apn内容为userInfoit