美文网首页
APNs推送原理及deviceToken特性

APNs推送原理及deviceToken特性

作者: OwenWong | 来源:发表于2020-03-20 18:04 被阅读0次

一、APNs推送原理
推送主要分为以下几步:
1.由App向iOS设备发送一个注册通知,用户需要同意系统发送推送。
2.iOS向APNs远程推送服务器发送App的Bundle Id和设备的UDID。
3.APNs根据设备的UDID和App的Bundle Id生成deviceToken再发回给App。
4.App再将deviceToken发送给远程推送服务器(自己的服务器), 由服务器保存在数据库中。
5.当自己的服务器想发送推送时, 在远程推送服务器中输入要发送的消息并选择发给哪些用户的deviceToken,由远程推送服务器发送给APNs。
6.APNs根据deviceToken发送给对应的用户。

简单测试:
1.注册授权

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        // 1.获取推送通知的权限
        UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge categories:nil];
        [application registerUserNotificationSettings:settings];
        
        // 2.注册远程推送
        [application registerForRemoteNotifications];
    return YES;
}

2.注册成功,获取deviceToken &接受推送消息

- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    NSMutableString * devices_token = [NSMutableString stringWithFormat:@"%@",deviceToken];
}
// 接受推送消息
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{
    NSLog(@"%@", userInfo);
}

3.注册失败

- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
    NSLog(@"Registfail,注册推送失败原因%@",error);
}

二、deviceToken特性
1.每个device token都是唯一的,只会对应一台设备。
2.device token与设备系统相关(注意不是和设备绑定的!详解见后文),同一设备系统上不同应用获取的token是同一个。
3.应用卸载重新安装,获取到的device token不会变化。

三、deviceToken是否会变化
1.升级系统device token有可能变化,确认的是升级到iOS5会变化,猜测是升级大的系统版本后device token会变化。
2.抹掉所有内容和设置,reset设备后,device token会变化。
3.恢复一个非本机的备份后,device token会变化。
4.device token会过期,这个众说纷纭,有说是半年的,有说一年,有说两年的,不过会过期应该是确凿的。
5.备份或者恢复本机的备份,device token不会变化

相关文章

网友评论

      本文标题:APNs推送原理及deviceToken特性

      本文链接:https://www.haomeiwen.com/subject/qfmjyhtx.html