iOS 远程推送通知、程序间调用时的AppDelegate 方法调用

//这个方法无论是远程推送还是程序间调用都用到了
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

  //先注册远程通知
[self registerFromRemoteNotificationToGetToken];   //远程推送、程序件调用的判断  
if ([launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]!=nil) {
    
//收到远程推送 APP程序未启动时调
  } else if ( [launchOptions objectForKey:UIApplicationLaunchOptionsURLKey]){     //应用间调用设置根控制器
  }    return YES; //如果返回NO则不会触发application: handleOpenURL:方法,导致程序之间不能调用 } //注册通知 -(void)registerFromRemoteNotificationToGetToken { if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) { [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings    settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]]; [[UIApplication sharedApplication] registerForRemoteNotifications]; } else { [[UIApplication sharedApplication]registerForRemoteNotificationTypes:    UIRemoteNotificationTypeSound|UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeBadge]; } } //程序间调用触发方法 - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {    //可以设置widows的跟控制根 } //注册远程通知后返回的Token,推送的标识 - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { //将device token转换为字符串及格式处理(处理后的token时64位的数字字母组合) NSString *deviceTokenStr = [NSString stringWithFormat:@"%@",deviceToken]; deviceTokenStr = [deviceTokenStr stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]]; deviceTokenStr = [deviceTokenStr stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; //将deviceToken保存在NSUserDefaults NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; [userDefaults setObject:deviceTokenStr forKey:DeviceTokenStringKEY]; [userDefaults synchronize]; } //注册通知失败重新注册 - (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err { //如果device token获取失败则需要重新获取一次 [NSTimer scheduledTimerWithTimeInterval:1*60 target:self selector:@selector(registerFromRemoteNotificationToGetToken) userInfo:nil    repeats:NO]; } //收到远程通知 APP状态是活跃或者后台挂起 - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { if (application.applicationState == UIApplicationStateActive) {//活跃   } else {//其他状态   } }

 

转载于:https://www.cnblogs.com/moluoyunduan/p/5015998.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值