本地通知與遠程通知

一般我們在學(xué)習(xí)一些新的東西的時候我們必須要問自己幾個問題,就舉通知的例子

1、什么是通知?
2、為什么要用通知?

最后才是學(xué)習(xí)它,這樣我們就是有目的的學(xué)習(xí)新的知識,而不是一味的別人都學(xué)了,所有我要學(xué)。

首先什么是通知(這片文章所有的內(nèi)容提到的通知都是與題目有關(guān)的,而不是消息機制里的“通知“)。
通知是蘋果公司自帶的,主要作用是app有什么重要的動態(tài)或者事件來提醒用戶的一種機制。

具體表現(xiàn)如圖


DC79585D64AFF373EAC967DCC7F4A5FE.jpg

5EE33F5A0F3C977FAF83F6E5D11B5A19.jpg

為什么要使用通知,因為通知有強大提醒能力,想象一下你只要在下載app后用戶允許了消息推送,當你有網(wǎng)絡(luò)情況下通知可以在任何時候,不論你是否開啟了app,還是在后臺界面你屏幕最頂上都會有通知提示框。
還有一點就是即時性,app遠程服務(wù)器推送過來的通知,客戶端可以立即接受到通知。

先學(xué)習(xí)下本地通知

通知是要通過客戶端授權(quán)的,所以在在appdelegate 的didfinishlaunching方法授權(quán)

1、認證

types里面的三個參數(shù)一般都是全選的,一個是app有上角的通知個數(shù),一個通知提示聲音,一個是提示框

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

[[UIApplication sharedApplication]registerUserNotificationSettings:setting];

2、在你需要消息通知的地方實例化本地消息通知

UILocationNotification * notification = [UILocationNotification alloc]init];
消息頭
notification.alertTitle = @”消息頭”;
notification.alertBody = @"消息體";
消息執(zhí)行時間
notification.fireDate =
加入到app本地通知中
[UIApplication shareApplication]scheduLocationNotifatication:notification];

如果要設(shè)置app圖片右上角的通知個數(shù)

notification.applicationIconBadgeNumber =

但是消息個數(shù)不是自動消失的,需要你在自己項目中的邏輯判斷這個通知個數(shù)。

通知個數(shù)也可用app對象來設(shè)置

[UIApplication shareApplication].applictionIconbadgeNumber =

如果要設(shè)置通知的提示音你可以在本地下載一段音頻,但是在蘋果通知提示音最長時間不能超過30秒。
notification.soundName = @"音頻的名稱";

遠程通知和本地通知類似,只是多了一個與蘋果打交道的過程。
想象一下你做的一個app用戶量比較多的情況下,公司的服務(wù)器要與用戶保持長連接,用戶量一多服務(wù)器的性能消耗就越大。小的公司可能就因為服務(wù)器的問題,還有一方面就是帶寬也要跟的上用戶量,要花大量的錢。所以一般小公司把長連接的需求交給了第三方,比如蘋果、融云之類的,第三方會與客戶保存長連接,而公司的服務(wù)器只有在用戶推送過來消息的時候才會提示服務(wù)器,等待服務(wù)器給于回應(yīng),而其他的時候公司服務(wù)器根本就不需要知道,如用心跳包來回測試客戶是否在線之類的。

遠程推送我們就要與蘋果打交道。
APNS全程apple push notification services
蘋果推送通知的服務(wù)器
具體與用戶和公司服務(wù)器的交互如果


QQ20161003-0@2x.png

在我們開發(fā)端我們只需了解我們怎么和APNS交互和接收通知的。首先客戶端會將手機的UDID和app的boundleID加密后發(fā)給APNS然后APNS會將deviceToken一個二級制的標示返回給客戶端,再客戶端將deviceToken發(fā)送給服務(wù)器,接下來只需等待通知做相應(yīng)的處理。

當然在使用APNS是要交錢的,必須成為蘋果的開發(fā)者,這就是xcode用真機調(diào)試不需要成為開發(fā)者,但是我們開發(fā)還是要成為開發(fā)者原因之一。

app實現(xiàn)遠程通知的條件
1、成為蘋果的開發(fā)者
2、需要用真機調(diào)試

最后編輯于
?著作權(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)容

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