iOS消息推送的工作機制可以簡單的用下圖來概括:
[[UIApplicationsharedApplication]registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeSound|UIRemoteNotificationTypeBadge)];
通過registerForRemoteNotificationTypes方法,告訴應用程序,能接受push來的通知。
在項目的AppDelegate中添加下面的方法來獲取deviceToken:
Ios代碼-(void)application:(UIApplication*)appdidRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken{ NSString*token=[NSStringstringWithFormat:@"%@",deviceToken]; NSLog(@"Mytokenis:%@",token); } -(void)application:(UIApplication*)appdidFailToRegisterForRemoteNotificationsWithError:(NSError*)error{ NSString*error_str=[NSStringstringWithFormat:@"%@",error]; NSLog(@"Failedtogettoken,error:%@",error_str); }
獲取到的deviceToken,我們可以提交給後台應用程序,發送通知的後台應用程序除了需要知道deviceToken之外,還需要一個與APNS連接的證書。
這個證書可以通過我們前面生成的兩個文件中得到。
1、將aps_developer_identity.cer轉換成aps_developer_identity.pem格式
Shell代碼opensslx509-inaps_developer_identity.cer-informDER-outaps_developer_identity.pem-outformPEM
2、將p12格式的私鑰轉換成pem
Shell代碼opensslpkcs12-nocerts-outPush_Noenc.pem-inPush.p12
3、創建p12文件
Shell代碼opensslpkcs12-export-inaps_developer_identity.pem-inkeyPush_Noenc.pem-certfilePush.certSigningRequest-name"aps_developer_identity"-outaps_developer_identity.p12
這樣我們就得到了在.net或java等後台應用程序中使用的證書文件:aps_developer_identity.p12
如果後台應用是php的話,那麼可以按照iOS消息推送機制中pem文件的生成這篇文章中的方法來生成php後台應用程序中使用的證書文件:ck.pem