iOS Push详述,了解一下? - 腾讯WeTest - 博客园
如何进行网络推送
一种是apple自己提供的通知服务(APNS服务器)、一种是用第三方推送
首先在工程中开启了应用并配有推送证书这时候打开app系统弹出询问用户是否允许推送,当用户允许后向苹果服务器(APNS)请求deviceToken,并由苹果服务器发送给自己的应用;自己的应用将DeviceTOken发送自己的服务器;自己服务器想要发送网络推送时将DeviceToken以及想要推送的信息发送给苹果服务器,苹果服务器根据deviceToken将信息发送给对应的客户端
优点:无论设备开启与否,都会发送到手机端。缺点是:消息推送的机制是苹果服务器控制,个别可能会出现推迟。
第三方推送机制,普遍使用Socket机制来实现的,它几乎可以达到及时的发送到目标用户手机端,适用于即时通讯类的应用。优点:他几乎是实时的,主要取决于他心跳包的节奏。缺点:因为ios系统的限制,她不能长时间在后台运行,所以在应用关闭的情况下这种推送机制是不可用的。
4把程序自己关掉和程序进入后台,远程推送的区别
一下来源于:iOS开发 iOS10推送必看 - IOS_Bowen - 博客园
//注册通知 iOS10 iOS8 iOS8以后的不同
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
if ([[UIDevice currentDevice].systemVersion floatValue]>=10.0) { UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
center.delegate = self;
[center requestAuthorizationWithOptions:(UNAuthorizationOptionAlert|UNAuthorizationOptionBadge|UNAuthorizationOptionSound) completionHandler:^(BOOL granted, NSError * _Nullable error) {
if (granted) {
NSLog(@"注册成功");
[center getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings * _Nonnull settings) {
NSLog(@"%@",settings);
}];
}else{
NSLog(@"注ceshibai");
} }];
}else if ([[UIDevice currentDevice].systemVersion floatValue]>8.0 ){ [application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]];
}else if ([UIDevice currentDevice].systemVersion.floatValue<8.0){
[application registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeSound];
}
// Override point for customization after application launch.
return YES;}