iOS的推送收到推送消息有三种情况
1:程序在已经退出(程序被系统杀死的时候)
2:程序在后台挂起的时候(按Home键或者下拉查看通知列表的时候)
3:程序在前台运行的时候
当程序退出的时候,点击推送消息会调用的方法是:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
if (launchOptions) {
//launchOptions是推送消息的主体,打印出来可以看到后台推送过来的消息,可以根据后台的消息进行操作
[self getRemoteNotificationWithRemoteDic:remoteNotification];
}
}
当程序没有被系统杀死的时候,点击推送消息会调用的方法是:
//应用收到远程通知时的
- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo
{
//userInfo 是推送消息的主体
//存储后台状态下的推送消息
//UIApplicationStateInactive----------应用程序在后台挂起
if ([UIApplication sharedApplication].applicationState == UIApplicationStateInactive) {
[self getRemoteNotificationWithRemoteDic:userInfo];
}else if ([UIApplication sharedApplication].applicationState == UIApplicationStateActive){
//应用程序在前台的时候
}
}
//点击推送消息所做的处理--------模态弹出一张图片
- (void)getRemoteNotificationWithRemoteDic:(NSDictionary *)remoteDic
{
//判断根视图有没有模态弹出的图片,如果有,先把那个模态弹出的视图给移除,再加载
UCSRootViewController *ucsRVC = (UCSRootViewController *)[UIApplication sharedApplication].keyWindow.rootViewController;
if (ucsRVC.presentedViewController) {
[ucsRVC.presentedViewController dismissViewControllerAnimated:YES completion:nil];
}
}