轉(zhuǎn)載一篇比較好的ios通知發(fā)送文章(極光推送)

極光博客

JiGuang – Powering Mobile Apps

跳至內(nèi)容

iOS 推送全解析俩檬,你不可不知的所有 Tips阵子!

編者按:這是極光內(nèi)部員工整理的一篇對(duì) iOS 推送的全面理解的文章往果,站在初學(xué)者的視角磷雇,在簡書很受歡迎羔砾。

本文旨在對(duì) iOS 推送進(jìn)行一個(gè)完整的剖析魄幕,如果你之前對(duì)推送一無所知相艇,那么在你認(rèn)真地閱讀了全文后必將變成一個(gè)推送老手,你將會(huì)對(duì)其中的各種細(xì)節(jié)和原理有充分的理解纯陨。以下是 pikacode 使用 iOS 推送的一些經(jīng)驗(yàn)坛芽,歡迎互相交流,指出錯(cuò)漏之處翼抠。

推送服務(wù)可以說是所有 App 的標(biāo)配咙轩,不論是哪種類型的 App,推送都從很大程度上決定了 App 的 打開率阴颖、使用率活喊、存活率 。因此量愧,熟知并掌握推送原理及方法钾菊,對(duì)每一個(gè)開發(fā)者來說都是必備技能帅矗,對(duì)每一個(gè)依賴 App 的公司來說都至關(guān)重要。

從 iOS 10 新增的 UserNotifications Framework 可以發(fā)現(xiàn)结缚,Apple 整合了原有散亂的 API损晤,并且增加了許多強(qiáng)大的功能。以 Apple 官方的角度來看红竭,也必然是相當(dāng)重視推送服務(wù)對(duì) App 的影響尤勋、以及對(duì) Apple iOS 生態(tài)圈長遠(yuǎn)發(fā)展的影響。

準(zhǔn)備篇

Tip 1:推送通知(Push Notification)必須購買 Apple 開發(fā)者賬號(hào)茵宪,并使用特定的推送證書

使用免費(fèi)帳號(hào)不能推送最冰。

那如果我們使用的是第三方推送服務(wù)(以下簡稱第三方)呢?比如「極光推送」稀火。也必須購買開發(fā)者帳號(hào)暖哨。因?yàn)樗械牡谌蕉紩?huì)將推送請(qǐng)求發(fā)至 APNs(Apple Push Notification service 蘋果推送通知服務(wù)),所有推送均是由 APNs 下發(fā)凰狞。

如何注冊(cè)及正確的配置證書篇裁,參考這里 iOS 證書設(shè)置指南。

原理篇

Tip 2:推送通知本身是 iOS 系統(tǒng)的行為赡若,所以在 App 沒有運(yùn)行(沒有在前臺(tái)也沒有在后臺(tái))的時(shí)候:

仍然能夠推送及接收(通知中心通知达布、頂部橫幅、刷新 App 右上角的小圓點(diǎn)即 badge [以下簡稱角標(biāo)] 等都會(huì)由系統(tǒng)來控制和展示)逾冬。

收到推送時(shí)黍聂,是無法在 App 的代碼中獲取到通知內(nèi)容的。因?yàn)樯澈袡C(jī)制身腻,此時(shí) App 的任何代碼都不可能被執(zhí)行产还。

Tip 3:手機(jī)向 APNs 注冊(cè)推送服務(wù)

在代碼中注冊(cè)推送服務(wù):

#ifdef __IPHONE_8_0

if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerUserNotificationSettings:)]) {

UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge| UIUserNotificationTypeSound|UIUserNotificationTypeAlert categories:nil];

[[UIApplication sharedApplication] registerUserNotificationSettings:settings];

} else {

UIRemoteNotificationType myTypes = UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound;

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:myTypes];

}

#else

UIRemoteNotificationType myTypes = UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound;

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:myTypes];

#endif

在第一次觸發(fā)這段代碼的時(shí)候,會(huì)有一個(gè)系統(tǒng)彈窗嘀趟,詢問你是否允許該 App 要給你推送信息脐区。當(dāng)你選擇允許時(shí),系統(tǒng)會(huì)打包 App+手機(jī)唯一標(biāo)識(shí)+證書 信息發(fā)送至 APNs 服務(wù)器注冊(cè)推送服務(wù)她按,APNs 系統(tǒng)會(huì)對(duì)該手機(jī)安裝的該 App 是否有推送權(quán)限進(jìn)行驗(yàn)證牛隅,所以必須要加入了 Apple Deveice 的手機(jī),使用對(duì)應(yīng) App 的推送證書才能夠成功的注冊(cè)尤溜。

如果注冊(cè)成功,則可以在 AppDelegate.m 的如下方法中獲取到 deviceToken汗唱,它是對(duì) 該手機(jī)+該App 組合的一個(gè)唯一標(biāo)識(shí)宫莱,當(dāng)使用遠(yuǎn)程推送時(shí),只需將推送消息發(fā)給指定的 deviceToken 即可使推送信息傳達(dá)給指定手機(jī)的指定 App 上哩罪。因此如果你使用第三方授霸,就需要在這個(gè)方法里將 deviceToken 傳給第三方巡验。(在 iOS 9 為了更好的保護(hù)用戶隱私,會(huì)出現(xiàn)多次重復(fù)刪除/安裝 App 導(dǎo)致 deviceToken 不斷變化的情況碘耳。有時(shí)會(huì)出現(xiàn)一條推送手機(jī)會(huì)收到 2 次的問題显设,屬于 iOS 9 系統(tǒng)問題)。

-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {

[JPUSHService registerDeviceToken:deviceToken];//將 deviceToken 傳給極光推送

}

如果以上步驟均成功辛辨,此時(shí)你能夠取到第三方提供的設(shè)備注冊(cè) id捕捂。能否取到該 id 值,可以作為判斷設(shè)備是否能夠成功推送的標(biāo)準(zhǔn)(見 Tip 6 – Registration ID)斗搞。因?yàn)楫?dāng)你取到該值時(shí)必然:

推送證書配置正確(你擁有了推送權(quán)限)指攒。

設(shè)備成功在 APNs 注冊(cè)并返回了 deviceToken(APNs 能識(shí)別你的設(shè)備了)。

返回 的 deviceToken 傳給第三方僻焚,成功在第三方生成了唯一標(biāo)識(shí)注冊(cè) id(第三方能將你的設(shè)備信息傳給 APNs 了)允悦。

綜上,注冊(cè)及接收推送必須使用真機(jī)虑啤,必須連網(wǎng)隙弛。

Tip 4:推送通知從 服務(wù)端 –> App 代碼 的過程

使用你們公司或第三方的服務(wù)端向 APNs 發(fā)送推送請(qǐng)求(請(qǐng)參考蘋果 APNs 相關(guān)資料,或者第三方推送提供了更簡單的 REST API)狞山。

APNs 接收并驗(yàn)證推送請(qǐng)求全闷。

APNs 找到設(shè)備下發(fā)推送。

手機(jī)收到推送通知铣墨,系統(tǒng)根據(jù) App 狀態(tài)進(jìn)行處理:

前臺(tái)收到:

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

后臺(tái)收到:

如果開啟了 Remote Notification 室埋,系統(tǒng)將推送傳到 didReceiveRemoteNotification:fetchCompletionHandler:(見 Tip 5 – 后臺(tái)推送),否則此時(shí)代碼中收不到推送伊约。

展示橫幅姚淆、通知中心、聲音屡律、角標(biāo)腌逢。

退出收到:

如果點(diǎn)擊推送橫幅/通知中心而啟動(dòng) App,系統(tǒng)將通知傳到 didFinishLaunchingWithOptions超埋。

展示橫幅搏讶、通知中心、聲音霍殴、角標(biāo)媒惕。

推送通知內(nèi)容篇

Tip 5:推送通知分為 本地/遠(yuǎn)程 2 種類型:

本地通知,可指定推送時(shí)間来庭,在該時(shí)間準(zhǔn)時(shí)彈出推送通知妒蔚。

遠(yuǎn)程推送通知,分為 普通推送/后臺(tái)推送/靜默推送 3 種類型。存在延遲問題(由于 Tip 1 第 2 點(diǎn)肴盏,APNs 的不穩(wěn)定及高峰時(shí)段的巨量請(qǐng)求所致)科盛。

普通推送

就是我們?cè)谑謾C(jī)上平時(shí)見到的推送通知。

包含聲音菜皂、橫幅贞绵、角標(biāo)、自定義字段恍飘。

App :

處于前臺(tái)榨崩,不會(huì)展示橫幅,可通過 didReceiveRemoteNotification(iOS 7 before)didReceiveRemoteNotification:fetchCompletionHandler:(iOS 7 after)獲取通知內(nèi)容(前臺(tái)展示橫幅的方法看這里)常侣。

處于后臺(tái)蜡饵,會(huì)展示橫幅,無法獲取通知內(nèi)容胳施。

處于退出溯祸,會(huì)展示橫幅,無法獲取通知內(nèi)容舞肆。

點(diǎn)擊圖標(biāo)啟動(dòng)焦辅,無法獲取通知內(nèi)容。

點(diǎn)擊通知橫幅啟動(dòng)椿胯,在 didFinishLaunchingWithOptions 獲取通知內(nèi)容筷登。

通知內(nèi)容類似如下:

{

"_j_msgid" = 200806057;? // 第三方附帶的 id,用于統(tǒng)計(jì)點(diǎn)擊

aps =? ? {

alert = "顯示內(nèi)容";

badge = 1;? // App 角標(biāo)哩盲,可推送 n前方、+n、-n 來實(shí)現(xiàn)角標(biāo)的固定廉油、增加惠险、減少

sound = default;? // 推送聲音,默認(rèn)系統(tǒng)三全音抒线,如需使用自己的聲音班巩,需要將聲音文件拖拽&拷貝至 Xcode 工程目錄任意位置,并在推送時(shí)指定其文件名

};

key1 = value1;? // 自定義字段嘶炭,可設(shè)置多組抱慌,用于處理內(nèi)部邏輯

key2 = value2;

}

后臺(tái)推送

各種顯示效果跟普通推送完全一樣。

必須攜帶 "content-available" = 1;

必須攜帶 alert眨猎、badge抑进、sound 中 至少 1 個(gè)字段。

僅 iOS 7 以后支持睡陪。

必須在 Xcode 工程中 TARGETS – Capabilities – Background Modes – Remote notifications 開啟該功能寺渗,具體可參照 iOS 7 Background Remote Notification夕凝。

App:

處于前臺(tái),可通過didReceiveRemoteNotification(iOS 7 before)didReceiveRemoteNotification:fetchCompletionHandler:(iOS 7 after) 獲取通知內(nèi)容户秤。

處于后臺(tái),可通過 didReceiveRemoteNotification:fetchCompletion Handler: 獲取通知內(nèi)容 // 獲取情況中與普通推送的唯一不同點(diǎn)逮矛,此時(shí) iOS 系統(tǒng)允許開發(fā)者在 App 處于后臺(tái)的情況下鸡号,執(zhí)行一些代碼,大概提供幾分鐘的時(shí)間须鼎,可以用來偷偷的刷新 UI鲸伴、切換頁面、下載更新包等等操作晋控。

處于退出汞窗,無法獲取通知內(nèi)容。

點(diǎn)擊圖標(biāo)啟動(dòng)赡译,無法獲取通知內(nèi)容仲吏。

點(diǎn)擊推送橫幅啟動(dòng),在 didFinishLaunchingWithOptions 獲取通知內(nèi)容蝌焚。

通知內(nèi)容類似如下:

{

"_j_msgid" = 2090737306;

aps =? ? {

alert = "顯示內(nèi)容";

badge = 1;

"content-available" = 1;? // 必帶字段

sound = default;

};

key1 = value1;

}

?

靜默推送

沒有任何展示效果裹唆。

必須攜帶 "content-available" = 1;,因此靜默必然是后臺(tái)的只洒。

必須不攜帶 alert许帐、badge、sound毕谴。

可攜帶自定義字段成畦。

App :

處于前臺(tái),可通過didReceiveRemoteNotification(iOS 7 before)didReceiveRemoteNotification:fetchCompletionHandler:(iOS 7 after) 獲取通知內(nèi)容涝开。

處于后臺(tái)循帐,可通過 didReceiveRemoteNotification:fetchCompletion Handler: 獲取通知內(nèi)容 //獲取情況中與普通推送的唯一不同點(diǎn),此時(shí) iOS 系統(tǒng)允許開發(fā)者在 App 處于后臺(tái)的情況下忠寻,執(zhí)行一些代碼惧浴,大概提供幾分鐘的時(shí)間,可以用來偷偷的刷新 UI奕剃、切換頁面衷旅、下載更新包等等操作。

處于退出纵朋,無法獲取通知內(nèi)容柿顶。

通知內(nèi)容類似如下:

{

"_j_msgid" = 3938587719;

aps =? ? {

alert = "";

"content-available" = 1;? // 必帶字段

};

key1 = value1;

}

推送目標(biāo)篇

別名、標(biāo)簽操软、Registration ID 均是第三方提供的用于更方便地指定推送目標(biāo)的功能嘁锯。

Tip 6:推送根據(jù)目標(biāo)的不同可分為:

廣播

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

別名 alias 推送

第三方提供的功能

一個(gè)手機(jī)的一款 App 只能設(shè)置一個(gè) alias(可修改)。

建議對(duì)每一個(gè)用戶都取不同的別名家乘,以此來確定唯一的用戶(也可多個(gè)用戶取 1 個(gè)別名)蝗羊。

推送時(shí)可指定多個(gè) alias 來下發(fā)同一內(nèi)容。

僅指定 alias 的用戶能夠收到推送仁锯。

標(biāo)簽 tag 推送

第三方提供的功能耀找。

可設(shè)置多個(gè)、可增加业崖、清空野芒。

用于指定多樣的屬性,如 『1000』+『daily』+『discount』 可用于表示月消費(fèi)超過 1k双炕、喜歡購買日用品狞悲、偏好折扣商品的用戶。

如果要?jiǎng)h除妇斤,需要在上次設(shè)置時(shí)摇锋,將設(shè)置的 tags 保存至 NSUserDefaults,本次剔除不需要的 tag 后站超,再重新設(shè)置乱投。

推送時(shí)可指定多個(gè) tag 來下發(fā)同一內(nèi)容。

手機(jī)如果設(shè)置了推送指定的多個(gè) tag 中任一個(gè)tag顷编,都能夠收到推送消息戚炫。如指定 『1000』+『globe』+『original』 (千元級(jí)消費(fèi)者、全球購媳纬、原價(jià))双肤,那么設(shè)置了 『100』+『globe』+『discount』(百元級(jí)消費(fèi)者、全球購钮惠、折扣價(jià))的用戶可以收到該推送消息茅糜。

Registration ID 推送

第三方提供的功能。

在 Tip 3 的第 3 步時(shí)將 deviceToken 提供給第三方之后素挽,其服務(wù)器會(huì)自動(dòng)生成的指向該手機(jī)的唯一 id蔑赘。

可在推送時(shí)指定多個(gè) id 來下發(fā)消息。

可用于對(duì)核心用戶预明、旗艦用戶的精準(zhǔn)推送缩赛。

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

Tip 7:應(yīng)用內(nèi)消息(以下簡稱消息 )和推送通知的區(qū)別,消息:

不需要 Apple 推送證書撰糠。

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

相比通知阅酪,更快速旨袒,幾乎沒有延遲汁针,可用于 IM 消息的即時(shí)送達(dá)。

能夠長時(shí)間保留離線消息砚尽,可獲取所有歷史消息內(nèi)容施无。

通過長連接技術(shù)下發(fā)消息,因此:

手機(jī)必須啟動(dòng)并與第三方服務(wù)器建立連接必孤。

如果手機(jī)啟動(dòng)立刻切至后臺(tái)帆精,很可能連接沒有建立。

手機(jī)必須處于前臺(tái)才能收到消息隧魄。

手機(jī)從后臺(tái)切回前臺(tái),會(huì)自動(dòng)重新建立連接隘蝎,并收到離線消息购啄。

沒有任何展示(橫幅、通知中心嘱么、角標(biāo)狮含、聲音),因此可以:

自定義字段實(shí)現(xiàn) UI 效果曼振。

完全在靜默情況下處理 App 內(nèi)部邏輯几迄。

使用一些 App Store 審核不會(huì)通過的功能,在審核時(shí)關(guān)閉功能冰评,上架后通過接收消息映胁,開啟相關(guān)功能。

組合大招篇

Tip 8:tags 的組合技巧

見 Tip 5 – 標(biāo)簽 tag 推送甲雅。

可以在服務(wù)端來統(tǒng)計(jì)分析用戶行為,然后將指定的 tags 發(fā)送至手機(jī),手機(jī)接收后再為用戶打上對(duì)應(yīng)的 tags戏蔑。

Tip 9:通知+消息的組合技巧

首先來看通知和消息特性的對(duì)比:

通知 消息

送達(dá)時(shí)間 可能存在幾秒延遲 幾乎無延遲

獲取時(shí)機(jī) 處于前臺(tái)或后臺(tái)能獲取內(nèi)容 僅處于前臺(tái)能獲取內(nèi)容

離線內(nèi)容 保留『一段時(shí)間』糜芳,過期會(huì)拋棄,無法查詢歷史內(nèi)容 始終保留妖枚,可查詢?nèi)繗v史內(nèi)容

系統(tǒng)展示 會(huì)展示(靜默推送或App處于前臺(tái)不展示) 不展示

由于各自的特性都存在差異廷臼,因此二者結(jié)合使用是使得 App 推送性能最大化的必然選擇:

情景一:

QQ/微信 聊天。會(huì)同時(shí)下發(fā)一組通知+消息 绝页,如果用戶沒有啟動(dòng) QQ荠商,雖有延遲但必然能夠先收到通知,在收到通知的提醒之后续誉,用戶打開 App结啼,此時(shí)收到了離線消息,即時(shí)更新 UI屈芜,與好友即時(shí)地發(fā)送/接收消息郊愧。(在收到通知后朴译,斷網(wǎng),然后啟動(dòng) App属铁,你會(huì)發(fā)現(xiàn)此時(shí)手機(jī)里并不會(huì)顯示剛剛通知的內(nèi)容眠寿,因?yàn)樗且揽坷∠硭⑿马撁娴模皇遣粔蚍€(wěn)定的通知)焦蘑。

情景二:(期待您的補(bǔ)充…)

本條目發(fā)布于2016 年 9 月 9 日盯拱。屬于技術(shù)文章分類。作者是Javen Fang例嘱。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末狡逢,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子拼卵,更是在濱河造成了極大的恐慌奢浑,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件腋腮,死亡現(xiàn)場離奇詭異雀彼,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)即寡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門徊哑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人聪富,你說我怎么就攤上這事莺丑。” “怎么了墩蔓?”我有些...
    開封第一講書人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵窒盐,是天一觀的道長。 經(jīng)常有香客問我钢拧,道長蟹漓,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任源内,我火速辦了婚禮葡粒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘膜钓。我一直安慰自己嗽交,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開白布颂斜。 她就那樣靜靜地躺著夫壁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪沃疮。 梳的紋絲不亂的頭發(fā)上盒让,一...
    開封第一講書人閱讀 51,115評(píng)論 1 296
  • 那天梅肤,我揣著相機(jī)與錄音,去河邊找鬼邑茄。 笑死姨蝴,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的肺缕。 我是一名探鬼主播左医,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼同木!你這毒婦竟也來了浮梢?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤彤路,失蹤者是張志新(化名)和其女友劉穎秕硝,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體斩萌,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年屏轰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了颊郎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡霎苗,死狀恐怖姆吭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情唁盏,我是刑警寧澤内狸,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站厘擂,受9級(jí)特大地震影響昆淡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜刽严,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一昂灵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧舞萄,春花似錦眨补、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至崎弃,卻和暖如春甘晤,著一層夾襖步出監(jiān)牢的瞬間含潘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來泰國打工安皱, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留调鬓,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓酌伊,卻偏偏與公主長得像腾窝,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子居砖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 本文旨在對(duì) iOS 推送進(jìn)行一個(gè)完整的剖析虹脯,如果你之前對(duì)推送一無所知,那么在你認(rèn)真地閱讀了全文后必將變成一個(gè)推送老...
    逆光少年閱讀 2,152評(píng)論 1 21
  • 準(zhǔn)備篇 Tip 1:推送通知(Push Notification)必須購買Apple開發(fā)者賬號(hào)奏候,并使用特定的推送證...
    AngeloD閱讀 1,298評(píng)論 0 1
  • 本文旨在對(duì) iOS 推送進(jìn)行一個(gè)完整的剖析,如果你之前對(duì)推送一無所知咒精,那么在你認(rèn)真地閱讀了全文后必將變成一個(gè)推送老...
    pikacode閱讀 27,752評(píng)論 91 290
  • 前言 我們?cè)趯?shí)現(xiàn)推送功能的時(shí)候镶柱,更需要了解下推送的原理機(jī)制,這樣我們?cè)诎l(fā)現(xiàn)問題時(shí)候才好定位到問題的解決辦法模叙。 推送...
    進(jìn)無盡閱讀 3,843評(píng)論 0 5
  • 推送通知注意:這里說的推送通知跟NSNotification有所區(qū)別NSNotification是抽象的歇拆,不可見的...
    醉葉惜秋閱讀 1,515評(píng)論 0 3