推送通知

2.jpg

推送通知
注意:這里說的推送通知跟NSNotification有所區(qū)別
NSNotification是抽象的姥芥,不可見的
推送通知是可見的(能用肉眼看到)

iOS中提供了2種推送通知

本地推送通知(Local Notification)
遠(yuǎn)程推送通知(Remote Notification)

1.jpg

[圖片上傳中祟牲。户魏。正蛙。(2)]
[圖片上傳中韵洋。鸭津。。(3)]
[圖片上傳中蚯舱。。掩蛤。(4)]
推送通知的呈現(xiàn)效果總結(jié)
總結(jié)一下枉昏,推送通知有5種不同的呈現(xiàn)效果
在屏幕頂部顯示一塊橫幅(顯示具體內(nèi)容)
在屏幕中間彈出一個UIAlertView(顯示具體內(nèi)容)
在鎖屏界面顯示一塊橫幅(鎖屏狀態(tài)下,顯示具體內(nèi)容)
更新app圖標(biāo)的數(shù)字(說明新內(nèi)容的數(shù)量)
播放音效(提醒作用)

[圖片上傳中揍鸟。兄裂。。(5)]

[圖片上傳中蜈亩。懦窘。肩刃。(6)]
推送通知的使用細(xì)節(jié)
發(fā)出推送通知時缚忧,如果當(dāng)前程序正運(yùn)行在前臺,那么推送通知就不會被呈現(xiàn)出來
點擊推送通知后勾邦,默認(rèn)會自動打開發(fā)出推送通知的app
不管app打開還是關(guān)閉道川,推送通知都能如期發(fā)出

本地推送通知
什么是本地推送通知
顧名思義午衰,就是不需要聯(lián)網(wǎng)就能發(fā)出的推送通知(不需要服務(wù)器的支持)
本地推送通知的使用場景
常用來定時提醒用戶完成一些任務(wù),比如
清理垃圾冒萄、記賬臊岸、買衣服、看電影尊流、玩游戲

如何發(fā)出本地推送通知
創(chuàng)建本地推送通知對象

UILocalNotification *ln = [[UILocalNotification alloc] init];
設(shè)置本地推送通知屬性
推送通知的觸發(fā)時間(何時發(fā)出推送通知)

@property(nonatomic,copy) NSDate *fireDate;
推送通知的具體內(nèi)容

@property(nonatomic,copy) NSString *alertBody;
在鎖屏?xí)r顯示的動作標(biāo)題(完整標(biāo)題:“滑動來” + alertAction)

@property(nonatomic,copy) NSString *alertAction;
音效文件名

@property(nonatomic,copy) NSString *soundName;
app圖標(biāo)數(shù)字

@property(nonatomic) NSInteger applicationIconBadgeNumber;
如何發(fā)出本地推送通知
調(diào)度本地推送通知(調(diào)度完畢后帅戒,推送通知會在特地時間fireDate發(fā)出)

[[UIApplication sharedApplication] scheduleLocalNotification:ln];
獲得被調(diào)度(定制)的所有本地推送通知

@property(nonatomic,copy) NSArray *scheduledLocalNotifications;
(已經(jīng)發(fā)出且過期的推送通知就算調(diào)度結(jié)束,會自動從這個數(shù)組中移除)
取消調(diào)度本地推送通知

  • (void)cancelLocalNotification:(UILocalNotification *)notification;

  • (void)cancelAllLocalNotifications;
    立即發(fā)出本地推送通知

  • (void)presentLocalNotificationNow:(UILocalNotification *)notification;
    本地推送通知的其他屬性
    每隔多久重復(fù)發(fā)一次推送通知

@property(nonatomic) NSCalendarUnit repeatInterval;
點擊推送通知打開app時顯示的啟動圖片

@property(nonatomic,copy) NSString *alertLaunchImage;
附加的額外信息

@property(nonatomic,copy) NSDictionary *userInfo;
時區(qū)

@property(nonatomic,copy) NSTimeZone *timeZone;
(一般設(shè)置為[NSTimeZone defaultTimeZone] 崖技,跟隨手機(jī)的時區(qū))
點擊本地推送通知
當(dāng)用戶點擊本地推送通知逻住,會自動打開app,這里有2種情況
app并沒有關(guān)閉迎献,一直隱藏在后臺
讓app進(jìn)入前臺瞎访,并會調(diào)用AppDelegate的下面方法(并非重新啟動app)

  • (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification;
    app已經(jīng)被關(guān)閉(進(jìn)程已死)

啟動app,啟動完畢會調(diào)用AppDelegate的下面方法

  • (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
    launchOptions參數(shù)通過UIApplicationLaunchOptionsLocalNotificationKey取出本地推送通知對象

遠(yuǎn)程推送通知(難)
什么是遠(yuǎn)程推送通知
顧名思義吁恍,就是從遠(yuǎn)程服務(wù)器推送給客戶端的通知(需要聯(lián)網(wǎng))
遠(yuǎn)程推送服務(wù)扒秸,又稱為APNs(Apple Push Notification Services)
為什么需要遠(yuǎn)程推送通知?
傳統(tǒng)獲取數(shù)據(jù)的局限性
只要用戶關(guān)閉了app冀瓦,就無法跟app的服務(wù)器溝通伴奥,無法從服務(wù)器上獲得最新的數(shù)據(jù)內(nèi)容
遠(yuǎn)程推送通知可以解決以上問題
不管用戶打開還是關(guān)閉app,只要聯(lián)網(wǎng)了翼闽,都能接收到服務(wù)器推送的遠(yuǎn)程通知

[圖片上傳中拾徙。。肄程。(7)]
遠(yuǎn)程推送通知使用須知
所有的蘋果設(shè)備锣吼,在聯(lián)網(wǎng)狀態(tài)下,都會與蘋果的服務(wù)器建立長連接
什么是長連接
只要聯(lián)網(wǎng)了蓝厌,就一直建立連接
長連接的作用
時間校準(zhǔn)
系統(tǒng)升級
查找我的iPhone
.. ...
長連接的好處
數(shù)據(jù)傳輸速度快
數(shù)據(jù)保持最新狀態(tài)

[圖片上傳中玄叠。。拓提。(8)]
[圖片上傳中读恃。。代态。(9)]
[圖片上傳中寺惫。。蹦疑。(10)]

[圖片上傳中西雀。。歉摧。(11)]

[圖片上傳中艇肴。。叁温。(12)]

[圖片上傳中再悼。。膝但。(13)]

[圖片上傳中冲九。。跟束。(14)]

一.開發(fā)iOS程序的推送功能, iOS端需要做的事
1.請求蘋果獲得deviceToken
2.得到蘋果返回的deviceToken
3.發(fā)送deviceToken給公司的服務(wù)器
4.監(jiān)聽用戶對通知的點擊

二.調(diào)試iOS的遠(yuǎn)程推送功能, 必備條件:
1.真機(jī)

2.調(diào)試推送需要的證書文件
1> aps_development.cer : 某臺電腦就能調(diào)試某個app的推送服務(wù)
2> ios_development.cer : 讓電腦具備真機(jī)調(diào)試的能力(調(diào)試設(shè)備)
3> iphone5_qq.mobileprovision : 某臺電腦就能利用某臺設(shè)備調(diào)試某個程序

三.發(fā)布具有推送服務(wù)的app
1> aps_production.cer : 如果發(fā)布的程序中包含了推送服務(wù),就必須安裝此證書
2> ios_distribution.cer : 讓電腦具備發(fā)布程序的能力
3> qq.mobileprovision : 某臺電腦就能發(fā)布某個程序

[圖片上傳中莺奸。。泳炉。(15)]

[圖片上傳中憾筏。。花鹅。(16)]

[圖片上傳中氧腰。。刨肃。(17)]

[圖片上傳中古拴。。真友。(18)]

[圖片上傳中黄痪。。盔然。(19)]

[圖片上傳中桅打。是嗜。。(20)]

[圖片上傳中挺尾。鹅搪。。(21)]

注冊遠(yuǎn)程推送通知
注冊成功后會調(diào)用AppDelegate的下面方法遭铺,得到設(shè)備的deviceToken

  • (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
    {
    NSLog(@"%@", deviceToken);
    }

點擊遠(yuǎn)程推送通知
當(dāng)用戶點擊遠(yuǎn)程推送通知丽柿,會自動打開app,這里有2種情況
app并沒有關(guān)閉魂挂,一直隱藏在后臺
讓app進(jìn)入前臺甫题,并會調(diào)用AppDelegate的下面方法(并非重新啟動app)

  • (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo;
    app已經(jīng)被關(guān)閉(進(jìn)程已死)

啟動app,啟動完畢會調(diào)用AppDelegate的下面方法

  • (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
    launchOptions參數(shù)通過UIApplicationLaunchOptionsRemoteNotificationKey取出服務(wù)器返回的字典內(nèi)容

[圖片上傳中涂召。坠非。。(22)]

[圖片上傳中果正。麻顶。。(23)]

[圖片上傳中舱卡。辅肾。。(24)]

[圖片上傳中轮锥。矫钓。。(25)]

[圖片上傳中舍杜。新娜。。(26)]

JPush
什么是JPush
一套遠(yuǎn)程推送解決方案既绩,支持android和iOS兩個平臺
它能夠快捷地為iOS App增加推送功能概龄,減少集成APNs需要的工作量、開發(fā)復(fù)雜度
更多的信息饲握,可以參考JPush官方網(wǎng)站:https://www.jpush.cn
集成iOS SDK的步驟可以參考

http://docs.jpush.cn/pages/viewpage.action?pageId=2621727

[圖片上傳中私杜。。救欧。(27)]

[圖片上傳中衰粹。。笆怠。(28)]

[圖片上傳中铝耻。。蹬刷。(29)]

[圖片上傳中瓢捉。频丘。。(30)]

**********************筆記*******************


一. 推送通知

  1. 什么是推送通知?

首先明確:**此處的推送通知跟我們的”NSNotification”沒有半毛錢關(guān)系
可以理解為: 向用戶推送一條信息來通知用戶某件事情
作用: 可以在APP退到后臺,或者關(guān)閉時;繼續(xù)推送一條消息告訴用戶某件事情

  1. 推送通知的應(yīng)用場景?
    (1) 一些任務(wù)管理APP,會在任務(wù)時間即將到達(dá)時,通知你做該任務(wù);
    (2) 健身App定時提醒你應(yīng)該健身了;
    (3) 買過電影票后,提前半小時告訴你,電影即將開場;
    (4) 當(dāng)你QQ或者微信收到消息時,即使退到后臺,或者關(guān)閉APP,也可以收到信息通知告訴我們;
    (5) 電商APP,推送一條消息通知我們有新品上架等等

  2. 推送通知的展現(xiàn)樣式?
    (1) 在屏幕頂部顯示一塊橫幅(顯示具體內(nèi)容)
    (2) 在屏幕中間彈出一個UIAlertView(顯示具體內(nèi)容)
    (3) 在鎖屏界面顯示一塊橫幅(鎖屏狀態(tài)下泡态,顯示具體內(nèi)容)
    (4) 更新app圖標(biāo)的數(shù)字(說明新內(nèi)容的數(shù)量)
    (5) 播放音效(提醒作用)

  • 注意:以上樣式只能是用戶自己設(shè)置,我們無法通過代碼控制*
  1. 推送通知的分類
    1.本地推送通知
    “本地”可以理解為”不聯(lián)網(wǎng)”;即使沒有網(wǎng)絡(luò)情況下,也可以推送通知消息
    應(yīng)用場景: 確定知道未來某個時間點應(yīng)該提醒用戶什么

2.遠(yuǎn)程推送通知
概念:
與“本地”相對,表示,必須在聯(lián)網(wǎng)情況下才會向用戶推送通知消息
遠(yuǎn)程推送服務(wù)椎镣,又稱為APNs(Apple Push Notification Services)
應(yīng)用場景:

  1. 不確定未來某個時間點應(yīng)該提醒用戶什么,臨時性的

  2. 當(dāng)APP徹底退出時也想繼續(xù)讓用戶獲取一些最新消息
    使用原則: 誰能確定通知時間和內(nèi)容, 誰就可以發(fā)送(開發(fā)人員在APP內(nèi)部通過代碼發(fā)送=本地通知; 服務(wù)器可以確定通知時間和內(nèi)容=遠(yuǎn)程通知)

  3. 推送通知的實現(xiàn)

  4. 本地推送通知
    1.創(chuàng)建UILocalNotification對象

2.設(shè)置一些必要屬性
推送通知的觸發(fā)時間(何時發(fā)出推送通知)
@property(nonatomic,copy) NSDate *fireDate;
推送通知的具體內(nèi)容
@property(nonatomic,copy) NSString *alertBody;

3.開始推送通知

  • 根據(jù)fireDate設(shè)定的時間進(jìn)行推送
    [[UIApplication sharedApplication] scheduleLocalNotification:ln];
  • 立即推送
    presentLocalNotificationNow:(UILocalNotification *)notification;

4.監(jiān)聽用戶點擊通知

  • app處于前臺
    此時不會彈框通知用戶通知的到達(dá),但是還是會調(diào)用對應(yīng)的代理方法
  • app并沒有關(guān)閉兽赁,一直隱藏在后臺時
    此時用戶點擊通知信息后,會讓app進(jìn)入前臺,并會調(diào)用AppDelegate的下面方法
    application: didReceiveLocalNotification:
  • app已經(jīng)被關(guān)閉(進(jìn)程已死)
    此時用戶點擊通知信息后,會啟動app冷守,啟動完畢會調(diào)用AppDelegate的下面方法
    application: didFinishLaunchingWithOptions:
    launchOptions參數(shù)通過UIApplicationLaunchOptionsLocalNotif icationKey取出本推送通知對象

5.額外設(shè)置
每隔多久重復(fù)發(fā)一次推送通知
@property(nonatomic) NSCalendarUnit repeatInterval;
點擊推送通知打開app時顯示的啟動圖片
@property(nonatomic,copy) NSString *alertLaunchImage;
附加的額外信息
@property(nonatomic,copy) NSDictionary *userInfo;
時區(qū)
@property(nonatomic,copy) NSTimeZone *timeZone;
(一般設(shè)置為[NSTimeZone defaultTimeZone] 刀崖,跟隨手機(jī)的時區(qū))
在鎖屏?xí)r顯示的動作標(biāo)題(完整標(biāo)題:“滑動來” + alertAction)
@property(nonatomic,copy) NSString *alertAction;
音效文件名
@property(nonatomic,copy) NSString *soundName;
app圖標(biāo)數(shù)字
@property(nonatomic) NSInteger applicationIconBadgeNumber;

6.其他操作

  • 獲得被調(diào)度(定制)的所有本地推送通知
    @property(nonatomic,copy) NSArray *scheduledLocalNotifications;
    已經(jīng)發(fā)出且過期的推送通知就算調(diào)度結(jié)束,會自動從這個數(shù)組中移除
  • 取消調(diào)度本地推送通知
  • (void)cancelLocalNotification:(UILocalNotification *)notification;
  • (void)cancelAllLocalNotifications;

7.注意事項

  • 在iOS 8.0+拍摇,如果要使用本地通知亮钦,需要得到用戶的許可
    在didFinishLaunchingWithOptions方法中添加如下代碼
    UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert categories:nil];
    [application registerUserNotificationSettings:settings];

8.額外補(bǔ)充

  • 在iOS8.0之后,可以設(shè)置推送通知帶操作行為
    在注冊設(shè)置時,設(shè)置categories:參數(shù)
    監(jiān)聽通知操作行為的點擊
  1. 遠(yuǎn)程推送通知
    1.遠(yuǎn)程推送的原理

所有蘋果設(shè)備, 在聯(lián)網(wǎng)狀態(tài)下,都會與蘋果服務(wù)器建立一個長連接
“長連接”: 相對的一個概念是”短連接”
“長連接”優(yōu)勢: 服務(wù)器可以向客戶端發(fā)送信息,保證數(shù)據(jù)即時性
劣勢: 占用客戶和服務(wù)器資源
“短連接”優(yōu)勢: 節(jié)省資源,一個會話結(jié)束后,立即釋放資源
劣勢: 服務(wù)器無法主動向客戶端發(fā)信息

蘋果設(shè)備“長連接”作用:
時間校準(zhǔn)
系統(tǒng)升級
查找我的iPhone
推送通知...

原理就是借助蘋果設(shè)備與APNs服務(wù)器之間的長連接, 借助APNs服務(wù)器將消息發(fā)送給客戶端

2.遠(yuǎn)程推送通知實現(xiàn)的條件

只有真機(jī)可以調(diào)試推送通知
因為只有真機(jī)具備UDID, 才能夠生成deviceToken
需要真機(jī)調(diào)試證書, 推送測試證書

3.遠(yuǎn)程推送通知實現(xiàn), 客戶端需要做的事

  1. 請求蘋果獲得deviceToken
    /**
  • 請求通知授權(quán),以及請求遠(yuǎn)程通知
    */
  • (void)registerRemoteNotification
    {
    if (isIOS(8.0))
    {
    1. 請求通知授權(quán)
    UIUserNotificationSettings *notificationSet = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert categories:nil];
    [[UIApplication sharedApplication] registerUserNotificationSettings:notificationSet];

      2. 注冊遠(yuǎn)程通知
      [[UIApplication sharedApplication] registerForRemoteNotifications];
    

    }
    else
    {
    iOS8.0之前請求遠(yuǎn)程推送通知
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound ];
    }
    }

  1. 得到蘋果返回的deviceToken,發(fā)送deviceToken給公司的服務(wù)器
    /**
  • 當(dāng)遠(yuǎn)程通知注冊后,APNs會通過調(diào)用這個方法,返回對應(yīng)的deviceToken
    */
    -(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
    {
    NSLog(@"%@", deviceToken);
    }
  1. 監(jiān)聽用戶對通知的點擊
    實現(xiàn)APP代理方法
    接收到通知, 并且在以下場景
    當(dāng)APP在前臺時, 可以調(diào)用
    當(dāng)APP從后臺, 進(jìn)入到前臺, 可以調(diào)用
    注意:當(dāng)APP 被徹底退出時, 不調(diào)用這個方法, 調(diào)用 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    -(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
    {
    NSLog(@"%@", userInfo);
    }

或者:
/**

  • 當(dāng)接收到遠(yuǎn)程通知時調(diào)用(iOS7.0之后使用)
  • 當(dāng)前在前臺時; 或者app在后臺\app被徹底退出狀態(tài)下,點擊通知打開app進(jìn)入前臺; 都可以執(zhí)行以下方法
  • 執(zhí)行completionHandler 作用
  •  1> 系統(tǒng)會估量App消耗的電量,并根據(jù)傳遞的UIBackgroundFetchResult 參數(shù)記錄新數(shù)據(jù)是否可用
    
  •  2> 調(diào)用完成的處理代碼時充活,應(yīng)用的界面縮略圖會自動更新
    
  • 如果想要接收到通知后,不要用戶點擊通知, 就執(zhí)行以下代碼, 那么必須有三個要求:
    1> 必須勾選后臺模式Remote Notification ;
    2> 告訴系統(tǒng)是否有新的內(nèi)容更新(執(zhí)行完成代碼塊)
    3> 設(shè)置發(fā)送通知的格式("content-available":"隨便傳")
    */
    -(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
    {

}

4.遠(yuǎn)程推送測試

PushMeBaby

  1. 編譯會出現(xiàn)錯誤, 直接把錯誤行注釋即可;
  2. 需要填寫對應(yīng)的deviceToken;
  3. 需要將推送測試證書改名為aps.cer 拖入項目中;

5.第三方推送
極光推送(JPush)
個推
信鴿

具體集成步驟以及使用方法, 請查看對應(yīng)的官方文檔, 非常詳細(xì);
第三方服務(wù)合集: [http://mdsa.51cto.com/services/]

二. 應(yīng)用程序間跳轉(zhuǎn)

  1. 什么是應(yīng)用間跳轉(zhuǎn),有什么作用?
  • 應(yīng)用場景
  1. 使用第三方用戶登錄蜂莉,需要用戶授權(quán),還需要"返回到調(diào)用的程序混卵,同時返回授權(quán)的用戶名"

  2. 應(yīng)用程序推廣映穗,網(wǎng)易彩票,設(shè)置-推薦應(yīng)用-有很多應(yīng)用程序圖標(biāo)如果本機(jī)已經(jīng)安裝過幕随,會直接跳轉(zhuǎn)到另外一個應(yīng)用程序, 軟件的廣告蚁滋,推廣結(jié)果,后續(xù)會有一些列的金錢上的結(jié)算

  3. 支付寶赘淮,第三方支付辕录,淘寶,電話費(fèi)充值梢卸。走诞。。

  4. 應(yīng)用程序間跳轉(zhuǎn)實現(xiàn)?
    直接打開對應(yīng)APP的scheme即可
    1.概念須知

URL : 統(tǒng)一資源定位符
scheme(協(xié)議頭) : 決定通過什么方式查找資源 http:// ftp:// tel:// file://
path(路徑) : 資源路徑 www.baidu.com 192.168.1.1/資源 110 /User/Desktop

  1. 設(shè)置方式

默認(rèn)情況下應(yīng)用程序是沒有自己的URL的,如果想要擁有自己的URL,需要設(shè)置URL
項目 -> info -> URL Types -> URL Scheme

  1. 打開方式
    代碼:
    [[UIApplication shareApplication] openURL:appURL];

4.跳轉(zhuǎn)到對方APP, 對方APP執(zhí)行的代理方法
-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{

}
iOS9.0跳轉(zhuǎn)適配

在info.plist文件中添加LSApplicationQueriesSchemes 字段 ,是數(shù)組類型

三. 社交分享

  1. 什么是社交分享, 有什么作用?
  • 通過用戶的分享蛤高,讓更多的人去了解和使用這個App
  • 目前移動互聯(lián)網(wǎng)應(yīng)用程序推廣的最重要手段之一
  • 屬于口碑營銷的范疇蚣旱,經(jīng)典成功案例是《瘋狂猜圖》
  1. 社交分享的實現(xiàn)方案
    1.系統(tǒng)自帶社交分享

  2. 導(dǎo)入Social.framework

  3. 判斷服務(wù)是否可用
    [SLComposeViewController isAvailableForServiceType:SLServiceTypeSinaWeibo];

  4. 彈出分享內(nèi)容輸入界面
    SLComposeViewController *cc = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeSinaWeibo];
    [self presentViewController:cc animated:YES completion:nil];

  5. 額外設(shè)置
    [cc setInitialText:@"測試文字"]; 初始化文字
    [cc addImage:[UIImage imageNamed:@"lufy"]]; 配圖

2.第三方SDK實現(xiàn)(友盟分享)
下載地址: [http://www.umeng.com/]

     1. 申請賬號,創(chuàng)建應(yīng)用
     2. 下載SDK
     3. 參照集成文檔

****************************************************************重要**********************
遠(yuǎn)程推送應(yīng)用配置過程

  1. 創(chuàng)建支持遠(yuǎn)程推送功能的App ID
  2. 創(chuàng)建調(diào)試證書,并選中剛剛創(chuàng)建的App ID
  3. 下載CER文件戴陡,并導(dǎo)入鑰匙串管理
  4. 創(chuàng)建發(fā)布證書姻锁,并選中剛剛創(chuàng)建的App ID
  5. 下載CER文件,并導(dǎo)入鑰匙串管理
  6. 檢查App ID猜欺,確認(rèn)證書已經(jīng)指定
  7. 生成描述文件

格式:{"aps":{"alert":"This is some fancy message.","badge":1,"sound":"default"}}

遠(yuǎn)程推送應(yīng)用程序開發(fā)過程

  1. 新建應(yīng)用程序
  2. 指定AppID位隶,在developer.apple.com上設(shè)置的AppID

if(系統(tǒng)版本 >= 8.0)
{
注冊接收通知的類型
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil];
[application registerUserNotificationSettings:settings];

注冊允許接收遠(yuǎn)程推送通知
[application registerForRemoteNotifications];

}
else
{
如果是iOS7.0,使用以下方法注冊
[application registerForRemoteNotificationTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound];
}

當(dāng)?shù)玫教O果的APNs服務(wù)器返回的DeviceToken就會被調(diào)用
7040f7d5 5a974598 c5cf31b5 3e340b39 68affd25 122f0ce1 3f315226 396c2e5b

  • (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    NSLog(@"deviceToken是:%@", deviceToken);
    }

接收到遠(yuǎn)程通知开皿,觸發(fā)方法和本地通知一致

  • (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
    NSLog(@"%@", userInfo);
    }

使用后臺的遠(yuǎn)程消息推送
1> 在Capabilities中打開遠(yuǎn)程推送通知
2> 實現(xiàn)代理方法

  • (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler

遠(yuǎn)程消息數(shù)據(jù)格式:
{"aps" : {"content-available" : 1},"content-id" : 42}

執(zhí)行completionHandler有兩個目的
1> 系統(tǒng)會估量App消耗的電量涧黄,并根據(jù)傳遞的UIBackgroundFetchResult 參數(shù)記錄新數(shù)據(jù)是否可用
2> 調(diào)用完成的處理代碼時篮昧,應(yīng)用的界面縮略圖會自動更新

注意:接收到遠(yuǎn)程通知到執(zhí)行完網(wǎng)絡(luò)請求之間的時間不能超過30秒

if (userInfo) {
int contentId = [userInfo[@"content-id"] intValue];

ViewController *vc = (ViewController *)application.keyWindow.rootViewController;
[vc loadDataWithContentID:contentId completion:^(NSArray *dataList) {
    vc.dataList = dataList;

    NSLog(@"刷新數(shù)據(jù)結(jié)束");

    completionHandler(UIBackgroundFetchResultNewData);
}];

} else {
completionHandler(UIBackgroundFetchResultNoData);
}alertView

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市笋妥,隨后出現(xiàn)的幾起案子懊昨,更是在濱河造成了極大的恐慌,老刑警劉巖春宣,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件酵颁,死亡現(xiàn)場離奇詭異,居然都是意外死亡月帝,警方通過查閱死者的電腦和手機(jī)躏惋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嚷辅,“玉大人簿姨,你說我怎么就攤上這事◆じ悖” “怎么了扁位?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長趁俊。 經(jīng)常有香客問我域仇,道長,這世上最難降的妖魔是什么寺擂? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任殉簸,我火速辦了婚禮,結(jié)果婚禮上沽讹,老公的妹妹穿的比我還像新娘般卑。我一直安慰自己,他們只是感情好爽雄,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布蝠检。 她就那樣靜靜地躺著,像睡著了一般挚瘟。 火紅的嫁衣襯著肌膚如雪叹谁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天乘盖,我揣著相機(jī)與錄音焰檩,去河邊找鬼。 笑死订框,一個胖子當(dāng)著我的面吹牛析苫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼衩侥,長吁一口氣:“原來是場噩夢啊……” “哼国旷!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起茫死,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤跪但,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后峦萎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體屡久,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年爱榔,在試婚紗的時候發(fā)現(xiàn)自己被綠了被环。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡搓蚪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出丁鹉,到底是詐尸還是另有隱情妒潭,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布揣钦,位于F島的核電站雳灾,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏冯凹。R本人自食惡果不足惜谎亩,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望宇姚。 院中可真熱鬧匈庭,春花似錦、人聲如沸浑劳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽魔熏。三九已至衷咽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蒜绽,已是汗流浹背镶骗。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留躲雅,地道東北人鼎姊。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親此蜈。 傳聞我的和親對象是個殘疾皇子即横,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353

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

  • 極光推送: 1.JPush當(dāng)前版本是1.8.2,其SDK的開發(fā)除了正常的功能完善和擴(kuò)展外也緊隨蘋果官方的步伐裆赵,SD...
    Isspace閱讀 6,719評論 10 16
  • 一东囚、推送通知 注意:這里說的推送通知跟NSNotification有所區(qū)別NSNotification是抽象的,不...
    Mg明明就是你閱讀 1,251評論 0 17
  • 什么是推送通知? APP退到后臺,或者關(guān)閉時;應(yīng)用推送一條消息告訴用戶某件事情,應(yīng)用通過點擊通知進(jìn)入到應(yīng)用相應(yīng)的頁...
    tiger2016閱讀 561評論 0 1
  • 推送通知 1. 什么是推送通知? 2. 推送通知的應(yīng)用場景? 3. 推送通知的展現(xiàn)樣式? 4. 推送通知的分類 本...
    翻這個墻閱讀 583評論 1 0
  • 推送通知 推送通知的作用 推送通知的呈現(xiàn)效果 推送通知的呈現(xiàn)效果總結(jié) 總結(jié)一下战授,推送通知有5種不同的呈現(xiàn)效果 1....
    Hevin_Chen閱讀 462評論 0 0