iOS推送

iOS消息推送的工作機制可以簡單的用下圖來概括:

1.png

上圖可以分為三個階段:
第一階段:應用程序把要發送的消息、目的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服務器,找到注冊的那臺手機,將消息推送過去。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 極光推送: 1.JPush當前版本是1.8.2,其SDK的開發除了正常的功能完善和擴展外也緊隨蘋果官方的步伐,SD...
    Isspace閱讀 6,764評論 10 16
  • 注:此文只現在已經不能適配iOS10了,iOS10推送采用了新的方法,做iOS9及以下的系統可讀此篇文章。 最近公...
    TIME_for閱讀 33,319評論 85 322
  • 推送: 用戶被動的接收消息,是程序在后臺的一種通知機制推送通知跟NSNotification不同1.NSNotif...
    Reliver閱讀 630評論 0 0
  • 推送通知 注意:這里說的推送通知跟NSNotification有所區別 NSNotification是抽象的,不可...
    iOS開發攻城獅閱讀 4,285評論 1 13
  • 暑假歸來的第一節語文課,毫無懸念地先與學生一起簡單盤點了一下暑假生活。這已是我開學第一課的慣例了。 ...
    淺淺風閱讀 274評論 0 0