一、蘋果中的幾種通知
1、廣播通知(NSNotificationCenter)
1)實(shí)現(xiàn)一個(gè)對(duì)象對(duì)多個(gè)對(duì)象的通信
2)是抽象的,肉眼看不到的
2、推送通知
1)可以讓不在前臺(tái)運(yùn)行的app,告知用戶app內(nèi)部發(fā)生了什么事情
2)肉眼看看到的
3)設(shè)置提示樣式
設(shè)置 ---- 通知中心? 點(diǎn)擊任意應(yīng)用通知? 提示樣式
4)推送通知有兩種
本地通知(Local Notification)
遠(yuǎn)程通知(Remote Notification)
二、本地推送通知
1、概念
不需要聯(lián)網(wǎng)就能發(fā)出的推送通知(不需要服務(wù)器的支持)
2、使用場(chǎng)景
常用來(lái)定時(shí)提醒用戶完成一些任務(wù),即使程序被殺死提示照樣有,例如:記事本、備忘錄等
3、如何發(fā)送出本地通知
1)創(chuàng)建本地通知對(duì)象
UILocalNotification *localN = [[UILocalNotification alloc]init];
2) 設(shè)置本地推送通知屬性
觸發(fā)時(shí)間
fireDate
通知的具體內(nèi)容
alertBody
鎖屏?xí)r的動(dòng)作標(biāo)題
alertAction
音效文件名
soundName
app圖標(biāo)數(shù)字
applicationIconBadgeNumber
點(diǎn)擊通知, 打開程序時(shí)候顯示的啟動(dòng)圖片
localNote.alertLaunchImage
3) 調(diào)度本地推送通知
[[UIApplication sharedApplication] scheduleLocalNotification:localN];
4) 取消所有通知
UIApplication *app = [UIApplication sharedApplication];
[app cancelAllLocalNotifications];
5)獲取授權(quán)
UIUserNotificationSettings *seeting = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil];
[application registerUserNotificationSettings:seeting];
三、監(jiān)聽本地通知點(diǎn)擊
1、點(diǎn)擊通知,應(yīng)用程序進(jìn)入前臺(tái)或者在前臺(tái)時(shí)調(diào)用,如果程序殺死,點(diǎn)擊通知信息不執(zhí)行
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{
}
2、如果程序被殺死后還想點(diǎn)擊通知信息進(jìn)入相應(yīng)界面,需要在下面方法里做相應(yīng)判斷
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
if(launchOptions){
UILocalNotification *localNote = launchOptions[UIApplicationLaunchOptionsLocalNotificationKey];
}
}
3、在Appdelegate向window添加試圖時(shí),要重寫window
/////遠(yuǎn)程推送////
一、遠(yuǎn)程通知基本概念
1、從遠(yuǎn)程服務(wù)器推送給客戶端的通知(需要聯(lián)網(wǎng))
2、又稱APNS(Apple Push Notification Services)
3、為什么需要遠(yuǎn)程推送通知
1)傳統(tǒng)獲取數(shù)據(jù)的局限性
只要用戶關(guān)閉了app,就無(wú)法跟服務(wù)器溝通,無(wú)法從服務(wù)器上獲取最新的數(shù)據(jù)內(nèi)容
2)遠(yuǎn)程推送通知可以解決以上問(wèn)題
不管用戶打開還是關(guān)閉app,只要聯(lián)網(wǎng)了,都能接到服務(wù)器推送的遠(yuǎn)程通知
二、遠(yuǎn)程通知使用須知
所有蘋果設(shè)備,在聯(lián)網(wǎng)狀態(tài)下,都會(huì)與蘋果的服務(wù)器建立長(zhǎng)鏈接
1)長(zhǎng)鏈接
只要聯(lián)網(wǎng)了,就一直建立鏈接
2)長(zhǎng)連接作用
時(shí)間校準(zhǔn)
系統(tǒng)升級(jí)
查找iPhone
3)長(zhǎng)鏈接的好處
數(shù)據(jù)傳輸速度快
數(shù)據(jù)保持最新狀態(tài)
三、推送通知原理
查看課件里面遠(yuǎn)程推送原理
1、發(fā)送設(shè)備的UDID和應(yīng)用的Bundle Identifer給APNS服務(wù)器
2、經(jīng)蘋果加密生成一個(gè)deviceToken,通過(guò)devieceToken能找到某個(gè)設(shè)備上的某個(gè)應(yīng)用程序
3、發(fā)送當(dāng)前用戶張三的deviceToken和用戶的標(biāo)志(比如id或qq)給QQ服務(wù)器
4、QQ服務(wù)器將發(fā)送過(guò)來(lái)的內(nèi)容存到數(shù)據(jù)庫(kù)
5、李四的手機(jī)給張三發(fā)信息--吃了么,實(shí)際是先發(fā)送到服務(wù)器
6、去數(shù)據(jù)庫(kù)查詢張三的deviceToken
7、將內(nèi)容發(fā)送給蘋果的APNS
8、APNS通過(guò)deviceToken找到張三現(xiàn)在的設(shè)備,并發(fā)送相應(yīng)信息
四、開發(fā)iOS程序的推送功能,iOS端需要做的事情
1、向蘋果請(qǐng)求獲得deviceToken
2、得到蘋果返回的deviceToken
3、發(fā)送deviceToken給公司的服務(wù)器
4、監(jiān)聽用戶對(duì)通知的點(diǎn)擊
五、調(diào)試iOS遠(yuǎn)程推送功能,必備條件
1、真機(jī)
2、調(diào)試推送需要的證書文件,
1)aps_development.cer
某臺(tái)電腦就能調(diào)試app的推送服務(wù)
2)iPhone5_qq.mobileprovision
某臺(tái)電腦就能利用某臺(tái)設(shè)備調(diào)試某個(gè)程序
3、發(fā)布具有推送服務(wù)的app
1)aps_production.cer
如果發(fā)布的程序中包含了推送服務(wù),就必須安裝這個(gè)證書
2)qq.mobileprovison
某臺(tái)電腦就能發(fā)布某個(gè)程序