iOS 個(gè)推透?jìng)鳈C(jī)制

iOS本身沒(méi)有透?jìng)魍扑蜋C(jī)制,是否使用第三方并不會(huì)改變推送的機(jī)制,第三方只是幫你寫好與APNS的交互,你只需設(shè)置要傳送的消息就好。只要有推送過(guò)來(lái)就一定會(huì)顯示推送彈窗,除非用戶關(guān)閉通知。
個(gè)推的透?jìng)骶妥咚麄冏约旱耐競(jìng)鞣椒ǖ?,分在線離線,離線就是后臺(tái)或app未啟動(dòng),在線就是app打開狀態(tài),如果是離線狀態(tài)收到消息會(huì)走APNS(表現(xiàn)就是頂部彈框、通知欄彈框、角標(biāo)變化,如果是靜默推送,還會(huì)自動(dòng)執(zhí)行一個(gè)方法,最下面有寫。普通推送不會(huì)走),但是打開app后就會(huì)走透?jìng)飨⒎椒ˋAA(靜默推送的話直接走透?jìng)鞣椒ˋAA,普通推送的話,先走BBB/CCC,再走AAA),如果是在線狀態(tài)就直接走透?jìng)飨ⅲ蛔逜PNS。如果你是用透?jìng)飨⑼扑偷脑?,都在透?jìng)鞣椒ㄖ刑幚砭秃昧恕?br> 結(jié)合我們公司的App,之前有個(gè)疑問(wèn):發(fā)單的那一刻,我們公司后臺(tái)走的是APNs還是透?jìng)髂兀?現(xiàn)在可以肯定的回答:離線走APNs,在線走透?jìng)鳌?/p>

  • 透?jìng)飨⒎椒ˋAA
    執(zhí)行時(shí)間1:程序離線(在后臺(tái)或者app未啟動(dòng))收到推送時(shí)候,當(dāng)由離線進(jìn)入在線的時(shí)候會(huì)執(zhí)行(此時(shí)offLine為YES)。如果一直是離線,那么肯定不會(huì)執(zhí)行該方法。
    執(zhí)行時(shí)間2:程序在線收到推送的時(shí)候會(huì)執(zhí)行(此時(shí)offLine為NO)。
- (void)GeTuiSdkDidReceivePayloadData:(NSData *)payloadData andTaskId:(NSString *)taskId andMsgId:(NSString *)msgId andOffLine:(BOOL)offLine fromGtAppId:(NSString *)appId {

}

普通推送(收到推送,有聲音有文字)

應(yīng)用在后臺(tái)收到通知的時(shí)候(不點(diǎn)開通知,也不打開APP哦),就不會(huì)執(zhí)行如下代碼

  • 在iOS 10之前,點(diǎn)通知,會(huì)調(diào)用如下方法BBB。
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{
  ...   
  做你想做的操作。例如更新UI,跳轉(zhuǎn)界面,操作userInfo中的內(nèi)容。
  ...
}
  • iOS 10 及以后版本,點(diǎn)擊通知,會(huì)調(diào)用如下方法CCC
-(void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)(void))completionHandler{
    
      ...
     做你想做的操作。例如更新UI,跳轉(zhuǎn)界面,操作userInfo中的內(nèi)容。
      ...

    NSLog(@"didReceiveNotification:%@", response.notification.request.content.userInfo);
    // [ GTSdk ]:將收到的APNs信息傳給個(gè)推統(tǒng)計(jì)
    [GeTuiSdk handleRemoteNotification:response.notification.request.content.userInfo];
    completionHandler();
    
}
靜默推送(收到推送,沒(méi)有聲音沒(méi)有文字)。應(yīng)用在后臺(tái)(應(yīng)用被殺死或者應(yīng)用未啟動(dòng)不滿足靜默推送)收到通知的時(shí)候(不點(diǎn)開通知,也不打開APP哦),就會(huì)立刻執(zhí)行如下的代碼。 部分iOS10+還是iOS10-
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{
  ...   
做你想做的操作:這里我用蘋果自帶的文字轉(zhuǎn)語(yǔ)音播放userInfo里面的指定內(nèi)容
  ...
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 一、以下為我集成時(shí)的問(wèn)題與解決方案: 1、iOS通知,在官網(wǎng)后臺(tái)怎么推送,不能單獨(dú)推送通知? iOS只能透?jìng)飨ⅲ?..
    _淺墨_閱讀 7,794評(píng)論 27 24
  • 網(wǎng)上介紹iOS Push的文章有很多,但是大部分都總結(jié)得非常零散,加上之前也一直沒(méi)好好總結(jié)過(guò),對(duì)某些地方也不求甚解...
    紙簡(jiǎn)書生閱讀 2,983評(píng)論 1 29
  • 點(diǎn)擊查看原文 Web SDK 開發(fā)手冊(cè) SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個(gè)完善的 IM 系統(tǒng)...
    layjoy閱讀 14,314評(píng)論 0 15
  • 最近一段時(shí)間工作量比較大, 抽不出時(shí)間來(lái)整理博客, 趁今天任務(wù)量較小的時(shí)候整理下關(guān)于環(huán)信推送的問(wèn)題, 介紹. 集成...
    imGeek閱讀 2,838評(píng)論 1 3
  • 讓我再想你一次,第一次見(jiàn)面的和諧。從容的微笑,微風(fēng)吹過(guò)你的卷發(fā),漫步在冬日大街上的溫暖,過(guò)馬路時(shí)一路的綠燈,這是運(yùn)...
    無(wú)聊的無(wú)愛(ài)閱讀 415評(píng)論 0 0

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