区块链技术博客
www.b2bchain.cn

iOS的远程推送原理,介绍不同系统版本的不同处理求职学习资料

本文介绍了iOS的远程推送原理,介绍不同系统版本的不同处理求职学习资料,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

远程推送
iOS的远程推送原理
  • iOS的远程推送与苹果的APNs服务建立连接过程如下:
    iOS的远程推送原理,介绍不同系统版本的不同处理
    用户手机安装了我们的app,如果我们的app注册了远程,那么苹果设备通过ssl 安全连接到apns,把设备的一些相关信息传给苹果的APNs,APNs会回传给设备一个唯一的标识,即devicetoken;然后设备将devicetoken传给我们的app,我们的app将devicetoken传给我们自己的服务器即provider,此时push通路已经建立。

  • push推送的原理图:
    iOS的远程推送原理,介绍不同系统版本的不同处理
    发push时,我们的服务器(provider)把push的内容和目标用户的devicetoken传给APNs,APNs通过devicetoken找到目标用户的设备,然后把push内容推送给该用户的设备,之后设备再将push内容传给app,app即可展示出此条push。

push注册及设置

在iOS9和iOS10下注册远程推送使用下面代码

[[UIApplication sharedApplication] registerForRemoteNotifications];

注册时相同的,但是在设置push的样式和categories上,不同的系统有所不同。

1、在iOS9系统下设置样式

设置categories和设置样式在一个api中完成,settingsForTypes:categories:

UIUserNotificationType types =  UIUserNotificationTypeBadge | UIUserNotificationTypeSound | | UIUserNotificationTypeAlert//设置通知可显示的样式行条、声音、弹窗提示 UIUserNotificationSettings *settting = [UIUserNotificationSettings settingsForTypes:types categories:nil]; //使用types和category一起生成配置setting [[UIApplication sharedApplication] registerUserNotificationSettings:settting];//用seting注册远程通知

2、在iOS10系统下设置样式

设置categories和设置样式,是分开处理的;设置categories使用setNotificationCategories,设置样式使用requestAuthorizationWithOptions:completionHandler:完成

//设置categories  //设置样式 [[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:UIUserNotificationTypeBadge | UIUserNotificationTypeSound | | UIUserNotificationTypeAlert completionHandler:^(BOOL granted, NSError * _Nullable error) {         if (granted) {             //注册远程通知         }else{           //可以提示用户开启远程通知         } }];

其中category表示通知的类型,表示不同action的push。

iOS9

@property (nullable, nonatomic, copy) NSString *identifier;//category的标记  //context表示通知的按钮占的位置,其中UIUserNotificationActionContextDefault默认大小,UIUserNotificationActionContextMinimal按钮占的空间有限制 - (void)setActions:(nullable NSArray<UIUserNotificationAction *> *)actions forContext:(UIUserNotificationActionContext)context;

iOS10

“`objective-c
//actions定义自己的actionArray

远程推送
iOS的远程推送原理
  • iOS的远程推送与苹果的APNs服务建立连接过程如下:
    iOS的远程推送原理,介绍不同系统版本的不同处理
    用户手机安装了我们的app,如果我们的app注册了远程,那么苹果设备通过ssl 安全连接到apns,把设备的一些相关信息传给苹果的APNs,APNs会回传给设备一个唯一的标识,即devicetoken;然后设备将devicetoken传给我们的app,我们的app将devicetoken传给我们自己的服务器即provider,此时push通路已经建立。

  • push推送的原理图:
    iOS的远程推送原理,介绍不同系统版本的不同处理
    发push时,我们的服务器(provider)把push的内容和目标用户的devicetoken传给APNs,APNs通过devicetoken找到目标用户的设备,然后把push内容推送给该用户的设备,之后设备再将push内容传给app,app即可展示出此条push。

push注册及设置

在iOS9和iOS10下注册远程推送使用下面代码

[[UIApplication sharedApplication] registerForRemoteNotifications];

注册时相同的,但是在设置push的样式和categories上,不同的系统有所不同。

1、在iOS9系统下设置样式

设置categories和设置样式在一个api中完成,settingsForTypes:categories:

UIUserNotificationType types =  UIUserNotificationTypeBadge | UIUserNotificationTypeSound | | UIUserNotificationTypeAlert//设置通知可显示的样式行条、声音、弹窗提示 UIUserNotificationSettings *settting = [UIUserNotificationSettings settingsForTypes:types categories:nil]; //使用types和category一起生成配置setting [[UIApplication sharedApplication] registerUserNotificationSettings:settting];//用seting注册远程通知

2、在iOS10系统下设置样式

设置categories和设置样式,是分开处理的;设置categories使用setNotificationCategories,设置样式使用requestAuthorizationWithOptions:completionHandler:完成

//设置categories  //设置样式 [[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:UIUserNotificationTypeBadge | UIUserNotificationTypeSound | | UIUserNotificationTypeAlert completionHandler:^(BOOL granted, NSError * _Nullable error) {         if (granted) {             //注册远程通知         }else{           //可以提示用户开启远程通知         } }];

其中category表示通知的类型,表示不同action的push。

iOS9

@property (nullable, nonatomic, copy) NSString *identifier;//category的标记  //context表示通知的按钮占的位置,其中UIUserNotificationActionContextDefault默认大小,UIUserNotificationActionContextMinimal按钮占的空间有限制 - (void)setActions:(nullable NSArray<UIUserNotificationAction *> *)actions forContext:(UIUserNotificationActionContext)context;

iOS10

“`objective-c
//actions定义自己的actionArray

远程推送
iOS的远程推送原理
  • iOS的远程推送与苹果的APNs服务建立连接过程如下:
    iOS的远程推送原理,介绍不同系统版本的不同处理
    用户手机安装了我们的app,如果我们的app注册了远程,那么苹果设备通过ssl 安全连接到apns,把设备的一些相关信息传给苹果的APNs,APNs会回传给设备一个唯一的标识,即devicetoken;然后设备将devicetoken传给我们的app,我们的app将devicetoken传给我们自己的服务器即provider,此时push通路已经建立。

  • push推送的原理图:
    iOS的远程推送原理,介绍不同系统版本的不同处理
    发push时,我们的服务器(provider)把push的内容和目标用户的devicetoken传给APNs,APNs通过devicetoken找到目标用户的设备,然后把push内容推送给该用户的设备,之后设备再将push内容传给app,app即可展示出此条push。

push注册及设置

在iOS9和iOS10下注册远程推送使用下面代码

[[UIApplication sharedApplication] registerForRemoteNotifications];

注册时相同的,但是在设置push的样式和categories上,不同的系统有所不同。

1、在iOS9系统下设置样式

设置categories和设置样式在一个api中完成,settingsForTypes:categories:

UIUserNotificationType types =  UIUserNotificationTypeBadge | UIUserNotificationTypeSound | | UIUserNotificationTypeAlert//设置通知可显示的样式行条、声音、弹窗提示 UIUserNotificationSettings *settting = [UIUserNotificationSettings settingsForTypes:types categories:nil]; //使用types和category一起生成配置setting [[UIApplication sharedApplication] registerUserNotificationSettings:settting];//用seting注册远程通知

2、在iOS10系统下设置样式

设置categories和设置样式,是分开处理的;设置categories使用setNotificationCategories,设置样式使用requestAuthorizationWithOptions:completionHandler:完成

//设置categories  //设置样式 [[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:UIUserNotificationTypeBadge | UIUserNotificationTypeSound | | UIUserNotificationTypeAlert completionHandler:^(BOOL granted, NSError * _Nullable error) {         if (granted) {             //注册远程通知         }else{           //可以提示用户开启远程通知         } }];

其中category表示通知的类型,表示不同action的push。

iOS9

@property (nullable, nonatomic, copy) NSString *identifier;//category的标记  //context表示通知的按钮占的位置,其中UIUserNotificationActionContextDefault默认大小,UIUserNotificationActionContextMinimal按钮占的空间有限制 - (void)setActions:(nullable NSArray<UIUserNotificationAction *> *)actions forContext:(UIUserNotificationActionContext)context;

iOS10

“`objective-c
//actions定义自己的actionArray

部分转自互联网,侵权删除联系

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » iOS的远程推送原理,介绍不同系统版本的不同处理求职学习资料
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们