iOS推送

推送通知本身是iOS系統(tǒng)的行為,所以在APP沒有運行(沒有再前臺也沒有再后臺)的時候,任然能夠推送或接受

收到推送的時候無法獲取到內(nèi)容,點擊通知之后能跳轉(zhuǎn)到APP中,可以獲取到推送中帶過來的擴展內(nèi)容

注冊推送服務(wù):

- (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary)launchOptions
{ //注冊推送

if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {
  [JPUSHService registerForRemoteNotificationTypes:(UIUserNotificationTypeBadge|UIUserNotificationTypeSound|UIUserNotificationTypeAlert) categories:nil];
} 
else {
[JPUSHService registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert) categories:nil];
   }
}

在第一次出發(fā)這段代碼的時候,會有一個系統(tǒng)彈窗,詢問你是否允許該APP要給你推送消息

允許:系統(tǒng)打包APP+手機唯一標識+證書發(fā)送至APNs服務(wù)器注冊推送服務(wù)

注冊成功:

可以在此方法中獲取到deviceToken他是對(手機+APP)組合的唯一標識

-(void)application:(UIApplication *)applicationdidRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{ //獲取DeviceToken
    [JPUSHService registerDeviceToken:deviceToken];此為極光方法
}
 
推送通知的提醒
前臺收到:

系統(tǒng)會將內(nèi)容傳到didReceiveRemoteNotification

后臺收到:

· 開啟了RemoteNotification,系統(tǒng)執(zhí)行didReceiveRemoteNotification:fetchCompletionHandler方法

· 展示橫幅、通知中心、聲音、角標

退出收到:

· 如果點擊推送橫幅、通知中心而啟動APP,執(zhí)行didFinishLaunchingWithOptions方法

· 展示橫幅、通知中心、聲音、角標

推送包含

本地通知:

APP指定推送時間,在該時間準時彈出推送通知

遠程通知:
1.普通推送

· 最常見的推送通知

· 包含聲音、橫幅、角標、自定義字段

· APP: 處于前臺,不展示橫幅,可通過didReceiveRemoteNotification(iOS7之前)或
didReceiveRemoteNotification:fetchCompletionHandler(iOS7之后)方法獲取內(nèi)容

· 處于后臺或退出,會展示橫幅,無法獲取通知內(nèi)容

· 點擊橫幅啟動,在didFinishLaunchingWithOptions方法獲取內(nèi)容

2.后臺推送

· 各種顯示效果如普通推送效果

· 必須攜帶"content-avaliable"=1;

· 必須攜帶alert,badge,sound中至少一個字段(后臺如果不給,前臺就沒有任何聲音)

· 必須在xcode工程中開啟notifications的功能

· APP

1.處于前臺或退出與普通推送效果一致

2.處于后臺,可通過didReceiveRemoteNotification:fetchCompletionHandler獲取通知內(nèi)容,獲取情況與普通推送不同的是,此時iOS系統(tǒng)允許開發(fā)者在APP處于后臺的情況下執(zhí)行代碼

3.靜默推送

· 沒有任何展示效果

· 必須攜帶"content-avaliable"=1;因此靜默必然是后臺的

· 不能攜帶alert、badge、sound任何字符

· 可攜帶自定義字段

· APP :效果與后臺推送效果一直

第三方推送

1.廣播 :

無差別的發(fā)給所有的用戶

2.別名(alias):

· 第三方提供的功能

· 每個手機只能設(shè)置一個別名alias

· 僅指定alias的用戶能收到推送,不再限制于手機

3.標簽(tag):

· 第三方提供

· 可以設(shè)置多個、可增加、清空

· 用于指定多樣的屬性,如"1000"+"daily"+"discount" 可用于標簽月消費超過1K,喜歡購買日用品、偏好折扣商品的用戶

· 如果要刪除,需要在上次設(shè)置的時候,講設(shè)置的tags保存至NSUserDefaults本次剔除不需要的tag之后,再重新設(shè)置

· 推送時可指定多個tag來統(tǒng)一發(fā)送內(nèi)容

4.Resgistration ID :

· 第三方提供

· 在講deviceToken提供給第三方之后,其服務(wù)器會自動生成的志向該手機的唯一id

· 可用于對核心用戶、期間用戶的精準推送

應(yīng)用內(nèi)消息

· 不需要證書

· 由第三方服務(wù)器下發(fā),而不是APNs

· 比通知快,不延遲,可用于IM消息的即時送達

· 能夠長時間保留離線消息,可獲取所有歷史消息內(nèi)容

· 能夠長連接技術(shù)下發(fā)消息 手機必須啟動并與第三方服務(wù)器建立連接

· 如果手機啟動立刻切換到后臺,很可能沒有建立連接

· 手機必須處于前臺才能接收消息

· 手機從后臺切回前臺,才會自動重新建立連接,并收到離線消息

· 沒有任何展示 只能自己實現(xiàn)UI效果

· 完全靜默情況下處理APP內(nèi)部邏輯

· AppStore審核必須關(guān)閉一些功能,上架后再通過后臺開啟

通知 與 消息對比

通知 消息
送達時間 可能存在幾秒的延遲 無延遲
獲取時間 前臺或后臺 僅前臺
離線內(nèi)容 保留一段時間,無法查詢歷史內(nèi)容 始終保留,可查詢?nèi)繗v史內(nèi)容
系統(tǒng)展示 靜默或處于前臺不展示,后臺或退出展示角標、聲音、橫幅 不展示

QQ/微信聊天

同時下發(fā)一組通知 + 消息,如果用戶沒有啟動APP,雖然有延遲,但是必然能夠收到通知,在通知的提醒之后,用戶打開APP,此時收到離線消息,及時更新UI

參考:iOS 推送全解析,你不可不知的所有 Tips?。ㄍ暾妫?/p>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文旨在對 iOS 推送進行一個完整的剖析,如果你之前對推送一無所知,那么在你認真地閱讀了全文后必將變成一個推送老...
    逆光少年閱讀 2,230評論 1 21
  • 本文旨在對 iOS 推送進行一個完整的剖析,如果你之前對推送一無所知,那么在你認真地閱讀了全文后必將變成一個推送老...
    pikacode閱讀 27,944評論 91 290
  • 準備篇 Tip 1:推送通知(Push Notification)必須購買Apple開發(fā)者賬號,并使用特定的推送證...
    AngeloD閱讀 1,427評論 0 1
  • 簡介 APNs 是 Apple Push Notification service 的簡稱 蘋果推送通知服務(wù)為...
    uubird閱讀 4,907評論 0 2
  • 總體內(nèi)容1.推送通知的介紹2.本地通知3.遠程通知4.極光推送的使用 一、推送通知的介紹 1.1、推送通知的作用:...
    IIronMan閱讀 5,487評論 4 34

友情鏈接更多精彩內(nèi)容