当服务端远程向APNS推送至一台离线的设备时,苹果服务器Qos组件会自动保留一份最新的通知,等设备上线后,Qos将把推送发送到目标设备上
远程推送的基本过程
1、客户端的app需要将用户的UDID和app的bundleID发送给apns服务器,进行注册,apns将加密后的device Token返回给app
2、app获得device Token后,上传到公司服务器
3、当需要推送通知时,公司服务器会将推送内容和device Token一起发给apns服务器
4、apns再将推送内容送到客户端上
创建证书的流程:
1、打开钥匙串,生成CertificateSigningRequest.certSigningRequest文件
2、将CertificateSigningRequest.certSigningRequest上传进developer,导出.cer文件
3、利用CSR导出P12文件
4、需要准备下设备token值(无空格)
5、使用OpenSSL合成服务器所使用的推送证书
本地app代码参考
1、注册远程通知
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions//中注册远程通知
{
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];
}
2、实现几个代理方法:
zterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
//获取设备的deviceToken唯一编号
NSLog(@"deviceToken=%@",deviceToken);
NSString *realDeviceToken=[NSString stringWithFormat:@"%@",deviceToken];
//去除<>
realDeviceToken = [realDeviceToken stringByReplacingOccurrencesOfString:@"<" withString:@""];
realDeviceToken = [realDeviceToken stringByReplacingOccurrencesOfString:@">" withString:@""];
NSLog(@"realDeviceToken=%@",realDeviceToken);
[[NSUserDefaults standardUserDefaults] setValue:realDeviceToken forKey:@"DeviceToken"]; //要发送给服务器
}
//获取令牌出错
-(void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
{
//注册远程通知设备出错
NSLog(@"RegisterForRemoteNotification error=%@",error);
}
//在应用在前台时受到消息调用
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
//打印推送的消息
NSLog(@"%@",[[userInfo objectForKey:@"aps"] objectForKey:@"alert"]):
}
网友评论