iOS实现远程推送原理及过程

2020-01-15 14:40:32于海丽

随便取个名字即可,然后下载下来

iOS,远程推送

发布配置文件和开发配置文件一样创建,选择Distribution->Ad Hoc即可,后面与发布配置文件一样。

iOS,远程推送

iOS,远程推送

iOS,远程推送

证书配置完成,打开我们创建的应用项目

打开AppDelegate.m 文件,在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 方法中添加下面代码,注册消息推送


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  // Override point for customization after application launch.
    /** 消息推送注册 */
  if ([UIDevice currentDevice].systemVersion.floatValue >= 8.0) {
    
    UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert categories:nil];
    [application registerUserNotificationSettings:settings];
    [application registerForRemoteNotifications];
  }else {
    [application registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
  }
  
  return YES;
}
下面方法是返回 ANPs 苹果推送服务器生成的唯一标识
/** 接收服务器传回的设备唯一标识 token */
-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{
  
  // 第一次运行获取到DeviceToken时间会比较长!
  // 将deviceToken转换成字符串,以便后续使用
  NSString *token = [deviceToken description];
  NSLog(@"description %@", token);
}

下面方法是当有消息推送回来时,接收推送消息 
/** 设备接收到来自苹果推送服务器的消息时触发的,用来显示推送消息 */

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{

  NSLog(@"userInfo == %@",userInfo);
}

上面方法是当注册推送服务失败时,接收错误信息
/** 注册推送服务失败 */
-(void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error{
  NSLog(@"注册失败 %@",error);
}