iOS消息推送的工作機制可以簡單的用下圖來概括:
上圖可以分為三個階段:
第一階段:應用程序把要發送的消息、目的iPhone的標識打包,發給APNS。
第二階段:APNS在自身的已注冊Push服務的iPhone列表中,查找有相應標識的iPhone,并把消息發送到iPhone。
第三階段:iPhone把發來的消息傳遞給相應的應用程序,并且按照設定彈出Push通知。
推送實現的過程
1、app注冊消息推送。
2、iOS從APNS Server獲取device token,app接收device token。
3、app將device token發送給app服務端程序。
4、服務端程序向APNS服務發送消息。
5、APNS服務將消息發送給app。
1.注冊
在項目的AppDelegate中的didFinishLaunchingWithOptions方法中,通過registerForRemoteNotificationTypes方法,告訴應用程序,能接受push來的通知。
//在項目的AppDelegate中的didFinishLaunchingWithOptions方法中加入下面的代碼
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeBadge)];
2.獲取deviceToken
在項目的AppDelegate中添加下面的方法來獲取deviceToken,
獲取到的deviceToken,我們可以提交給后臺應用程序,發送通知的后臺應用程序除了需要知道deviceToken之外,還需要一個與APNS連接的證書。
- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
NSString *token = [NSString stringWithFormat:@"%@", deviceToken];
NSLog(@"My token is:%@", token);
}
- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
NSString *error_str = [NSString stringWithFormat: @"%@", error];
NSLog(@"Failed to get token, error:%@", error_str);
}
3.處理推送來的信息
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
}
相關資料
http://www.cnblogs.com/qq78292959/archive/2012/07/16/2593651.html
http://blog.csdn.net/like7xiaoben/article/details/8447612
http://www.cocoachina.com/ios/20141011/9880.html
iOS本地通知
參考: http://www.lxweimin.com/p/e347f999ed95
app將手機的唯一標識uuid發給app的服務端,并注冊到蘋果的apns服務器上,app的服務端將uuid和要發送的消息打包,加上蘋果推送證書,發給蘋果的apns服務器,再由蘋果的apns服務器,找到注冊的那臺手機,將消息推送過去。