这个是处理app在关闭状态下点击推送消息启动app时的场景,开发文档上好像没有写,自己研究出来的
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
if (launchOptions) {
// UIAlertView *alertView;
// self.alertView = [[UIAlertView alloc]initWithTitle:@"launchOptions" message:launchOptions.descriptionInStringsFileFormat delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:nil, nil];
// [self.alertView show];
[self handleLaunchOptionsRemoteNotification:launchOptions];
}
return YES;
}
//处理启动app时的远程推送
- (void)handleLaunchOptionsRemoteNotification:(NSDictionary *)userInfo {
NSString *webStr = [[userInfo objectForKey:@"UIApplicationLaunchOptionsRemoteNotificationKey"] objectForKey:@"webUrl"];
if (webStr) {
if ([webStr containsString:@"http"]) {
[self.window.rootViewController presentViewController:[webViewController initWithURL:webStr] animated:YES completion:nil];
}else {
[self.window.rootViewController presentViewController:[webViewController initWithURL:[NSString stringWithFormat:@"http://%@.com", webStr]] animated:YES completion:nil];
}
}
}
下面都是友盟推送开发文档上的
//iOS10以下使用这两个方法接收通知
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{
[UMessage setAutoAlert:NO];
if([[[UIDevice currentDevice] systemVersion]intValue] < 10){
[UMessage didReceiveRemoteNotification:userInfo];
[self handleRemoteNotification:userInfo];
}
completionHandler(UIBackgroundFetchResultNewData);
}
//iOS10新增:处理前台收到通知的代理方法
-(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler{
NSDictionary * userInfo = notification.request.content.userInfo;
if([notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
[UMessage setAutoAlert:NO];
//应用处于前台时的远程推送接受
//必须加这句代码
[UMessage didReceiveRemoteNotification:userInfo];
NSLog(@"xjy前台时的远程推送接受:%@", userInfo);
[self handleRemoteNotification:userInfo];
}else{
//应用处于前台时的本地推送接受
NSLog(@"xjy处于前台时的本地推送接受:%@", userInfo);
}
completionHandler(UNNotificationPresentationOptionSound|UNNotificationPresentationOptionBadge|UNNotificationPresentationOptionAlert);
}
//iOS10新增:处理后台点击通知的代理方法
-(void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler{
NSDictionary * userInfo = response.notification.request.content.userInfo;
if([response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
//应用处于后台时的远程推送接受
//必须加这句代码
[UMessage didReceiveRemoteNotification:userInfo];
NSLog(@"xjy处于后台时的远程推送接受:%@", userInfo);
[self handleRemoteNotification:userInfo];
}else{
//应用处于后台时的本地推送接受
NSLog(@"xjy处于后台时的本地推送接受:%@", userInfo);
}
}
网友评论