iOS推送那点事

 最近一直在弄推送,趁着还记得,把它整理一下。

1.生成推送证书,现在说一下开发证书。在appStore申请一个推送证书。这个应该都知道就不细说了。然后下载。在钥匙串中找到该证书。

然后单机“Apple Development Push Services”,导出p12文件,保存为 apns-dev-cert.p12 文件,

扩展“Apple Development Push Services” 对“Private Key”做同样操作,保存为 apns-dev-key.p12 文件

在终端写命令openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12

openssl pkcs12 -nocerts -out apns-dev-key.pem -in apns-dev-key.p1 将这些文件转换为PEM格式。

如果你想要移除密码,要么在导出/转换时不要设定或者执行 openssl rsa -in apns-dev-key.pem -out apns-dev-key-noenc.pem

最后,你需要将键和许可文件合成为apns-dev.pem文件,此文件在连接到APNS时需要使用
cat apns-dev-cert.pem apns-dev-key-noenc.pem > apns-dev.pem

最后生成的这个证书发给后台就可以,然后不出意外你的程序就可以接受推送消息了

推送消息处理:

在appdelegate的这个方法didReceiveRemoteNotification处理推动消息,也可以用这个方法didReceiveRemoteNotification 因为我们做的是类似微信的聊天

iOS推送那点事_第1张图片

所以我全部用的通知来完成。例如这个方法处理中

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

//处理推送消息

NSLog(@"收到推送消息:%@",[[userInfoobjectForKey:@"aps"]objectForKey:@"alert"]);

if(userInfo && [userInfoisKindOfClass:[NSDictionaryclass]]){

[UIApplicationsharedApplication].applicationIconBadgeNumber= 0;

NSDictionary*dicMessage =userInfo[@"aps"][@"alert"];

NSUserDefaults*userDefault = [NSUserDefaultsstandardUserDefaults];

NSIntegercurrentPage = [userDefaultintegerForKey:@"CurrentPage"];

NSString*topic_id = [userDefaultobjectForKey:@"topicid"];

if(currentPage == 1&&[dicMessage[@"topic_id"]isEqualToString:topic_id]) {

//创建通知

NSNotification* notice = [NSNotificationnotificationWithName:@"push_text"object:niluserInfo:dicMessage];

//通过通知中心发送通知

[[NSNotificationCenterdefaultCenter]postNotification:notice];

}

elseif(![LDCommonUtilisBlankString:dicMessage[@"title"]]) {

NSNotification*notification = [NSNotificationnotificationWithName:@"go_out"object:niluserInfo:dicMessage];

[[NSNotificationCenterdefaultCenter]postNotification:notification];

[LDCommonUtilalertWithTitle:dicMessage[@"title"]msg:dicMessage[@"body"]];

}

elseif(currentPage == 2&& [userDefaultintegerForKey:@"background"]==1){

NSNotification*notification = [NSNotificationnotificationWithName:@"open_page"object:niluserInfo:dicMessage];

[[NSNotificationCenterdefaultCenter]postNotification:notification];

NSUserDefaults*defaulets = [NSUserDefaultsstandardUserDefaults];

[defauletssetInteger:0forKey:@"background"];

[defauletssynchronize];

}

}

}

创建通知,然后再消息界面处理通知。怎么样,其实很简单吧!

你可能感兴趣的:(iOS推送那点事)