iOS 推送設(shè)置及相應(yīng)處理

推送設(shè)置

1.推送界面設(shè)置

在iOS8 之后圣勒,推送可以設(shè)置一些操作按鈕,即使app在后臺(tái)甚至是app被殺掉的情況下也能做一下簡(jiǎn)單的操作摧扇,就像微信的快捷回復(fù)一樣圣贸。

  1. 設(shè)置action
UIMutableUserNotificationAction * action1 = [[UIMutableUserNotificationAction alloc] init];
    action1.identifier = @"action1";
    action1.title=@"忽略";
    action1.behavior = UIUserNotificationActionBehaviorDefault; // 操作類(lèi)型,默認(rèn)按鈕
    action1.activationMode = UIUserNotificationActivationModeBackground; // 后臺(tái)操作扛稽,不需要打開(kāi)app
    action1.authenticationRequired = YES; // 是否需要解鎖
    action1.destructive = YES; // 樣式區(qū)別

    UIMutableUserNotificationAction * action2 = [[UIMutableUserNotificationAction alloc] init];
    action2.identifier = @"action2";
    action2.title=@"回復(fù)";
    action2.behavior = UIUserNotificationActionBehaviorTextInput; // 操作類(lèi)型吁峻,輸入框
    action2.activationMode = UIUserNotificationActivationModeBackground; // 后臺(tái)操作,不需要打開(kāi)app

    UIMutableUserNotificationAction * action3 = [[UIMutableUserNotificationAction alloc] init];
    action3.identifier = @"action3";
    action3.title=@"查看";
    action3.behavior = UIUserNotificationActionBehaviorDefault; // 操作類(lèi)型庇绽,默認(rèn)按鈕
    action3.activationMode = UIUserNotificationActivationModeForeground; // 前臺(tái)操作锡搜,打開(kāi)app
//如果 activationMode = UIUserNotificationActivationModeForeground橙困,authenticationRequired設(shè)置之后不起作用瞧掺;
//因?yàn)槿绻枰芭_(tái)操作就需要打開(kāi)app,那肯定是需要解鎖的
    action1.authenticationRequired = NO;
  1. 組裝category
// 可以設(shè)置多種樣式凡傅,在推送的時(shí)候通過(guò)字段category控制樣式
//category1
UIMutableUserNotificationCategory * category1 = [[UIMutableUserNotificationCategory alloc] init];
category1.identifier = @"Category1";
[category1 setActions:@[action1,action2,action3] forContext:(UIUserNotificationActionContextDefault)];
//category2
UIMutableUserNotificationCategory * category2 = [[UIMutableUserNotificationCategory alloc] init];
category2.identifier = @"Category2";
[category2 setActions:@[action2] forContext:(UIUserNotificationActionContextDefault)];
  1. 設(shè)置推送
UIUserNotificationSettings *uns = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound) categories:[NSSet setWithObjects: category1,category2, nil]];
[[UIApplication sharedApplication] registerUserNotificationSettings: uns];

2.推送紅點(diǎn)數(shù)設(shè)置

對(duì)于BadgeNumber辟狈,只是一種提醒方式,在系統(tǒng)的通知設(shè)置頁(yè)面可以對(duì)相應(yīng)的app設(shè)置顯示樣式夏跷,其中就有一個(gè)選項(xiàng)是是否顯示圖標(biāo)標(biāo)記哼转。
對(duì)于BadgeNumber的值,在推送消息中用badge來(lái)設(shè)置槽华,客戶(hù)端可以用[UIApplication sharedApplication].applicationIconBadgeNumber對(duì)紅點(diǎn)數(shù)進(jìn)行修改壹蔓。并且每當(dāng)有推送過(guò)來(lái)的時(shí)候,顯示的BadgeNumber都會(huì)跟推送中設(shè)置的值一致猫态,不會(huì)自動(dòng)累加佣蓉。

3.推送聲音設(shè)置

推送聲音的音頻文件披摄,試了aiff,wav勇凭,caf疚膊,mp3格式的音頻貌似都可以。
將音頻文件添加到項(xiàng)目中之后虾标,就可以通過(guò)sound字段來(lái)控制推送的聲音寓盗。

4.推送內(nèi)容設(shè)置

一般來(lái)說(shuō),推送顯示的內(nèi)容可以通過(guò)alert字段進(jìn)行直接的設(shè)置璧函。同時(shí)對(duì)于一些固定格式的推送內(nèi)容傀蚌,可以配合Localizable.strings來(lái)設(shè)置。在Localizable.strings可以設(shè)置一條信息:

"weather" = "今天天氣為%@柳譬,溫度%@度";

推送內(nèi)容設(shè)置為:

"alert":{"loc-args":["晴","15"],"loc-key":"weather"}

5.靜默推送

需要設(shè)置"content-available" : 1喳张,既然是靜默推送就是不讓用戶(hù)感知,所以alert和sound字段一般都不設(shè)置美澳。如果設(shè)置了销部,就會(huì)有提示,但本質(zhì)上講還是靜默推送制跟,因?yàn)樗屓粫?huì)默默的調(diào)用下面的方法

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler ;

推送處理

一般的推送處理舅桩,就是點(diǎn)擊推送的消息打開(kāi)app,如果要增加體驗(yàn)的話(huà)可以在點(diǎn)擊推送之后做一下操作雨膨,比如跳轉(zhuǎn)頁(yè)面或者刷新數(shù)據(jù)擂涛。
app在不同的狀態(tài)下,點(diǎn)擊推送會(huì)觸發(fā)不同的方法
1聊记、app前臺(tái)運(yùn)行撒妈,這條推送不會(huì)出現(xiàn)在消息欄,但是會(huì)觸發(fā)下面的方法排监。

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo;

2狰右、后臺(tái)運(yùn)行,點(diǎn)擊推送消息舆床,包括通知欄和頂部提示棋蚌,啟動(dòng)app

    - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo ;

4、進(jìn)程已經(jīng)被kill挨队,點(diǎn)擊推送啟動(dòng)app谷暮,launchOptions 有值,

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;

5盛垦、推送有操作按鈕湿弦,微信的鎖屏回復(fù)就是通過(guò)這個(gè)方法處理的

    - (void)application:(UIApplication *)application handleActionWithIdentifier:(nullable NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo withResponseInfo:(NSDictionary *)responseInfo completionHandler:(void(^)())completionHandler;

6、靜默推送腾夯,收到靜默推送時(shí)颊埃,會(huì)主動(dòng)調(diào)用下面的方法赌蔑,不需要操作

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler ;

推送內(nèi)容格式

  1. 一般形式
{
      "aps":{
              "alert":"message",
              "badge":1,
              "category":"Category2",
              "sound":"Glass.aiff"
      }
}
  1. 本地拼接推送內(nèi)容
{
      "aps":{
              "alert":{
                     "loc-args":["晴","15"],
                      "loc-key":"weather"
               },
              "badge":1,
              "category":"Category2",
              "sound":"Glass.aiff"
      }
}
  1. 靜默推送
{
      "aps":{
              "alert":{
                     "loc-args":["晴","15"],
                      "loc-key":"weather"
               },
              "badge":1,
              "category":"Category2",
              "sound":"Glass.aiff",
              "content-available" : 1
      }
}

搞了個(gè)推送工具方便測(cè)試
可以通過(guò)scheme跳轉(zhuǎn)的方式添加token
添加證書(shū)方式為p12文件的base64字符串

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市竟秫,隨后出現(xiàn)的幾起案子娃惯,更是在濱河造成了極大的恐慌,老刑警劉巖肥败,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件趾浅,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡馒稍,警方通過(guò)查閱死者的電腦和手機(jī)皿哨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)纽谒,“玉大人证膨,你說(shuō)我怎么就攤上這事」那” “怎么了央勒?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)澳化。 經(jīng)常有香客問(wèn)我崔步,道長(zhǎng),這世上最難降的妖魔是什么缎谷? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任井濒,我火速辦了婚禮,結(jié)果婚禮上列林,老公的妹妹穿的比我還像新娘瑞你。我一直安慰自己,他們只是感情好希痴,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布者甲。 她就那樣靜靜地躺著,像睡著了一般润梯。 火紅的嫁衣襯著肌膚如雪过牙。 梳的紋絲不亂的頭發(fā)上甥厦,一...
    開(kāi)封第一講書(shū)人閱讀 51,727評(píng)論 1 305
  • 那天纺铭,我揣著相機(jī)與錄音,去河邊找鬼刀疙。 笑死舶赔,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的谦秧。 我是一名探鬼主播竟纳,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼撵溃,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了锥累?” 一聲冷哼從身側(cè)響起缘挑,我...
    開(kāi)封第一講書(shū)人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎桶略,沒(méi)想到半個(gè)月后语淘,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡际歼,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年惶翻,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鹅心。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡吕粗,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出旭愧,到底是詐尸還是另有隱情颅筋,我是刑警寧澤,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布输枯,位于F島的核電站垃沦,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏用押。R本人自食惡果不足惜肢簿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蜻拨。 院中可真熱鬧池充,春花似錦、人聲如沸缎讼。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)血崭。三九已至卧惜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間夹纫,已是汗流浹背咽瓷。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留舰讹,地道東北人茅姜。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像月匣,于是被迫代替她去往敵國(guó)和親钻洒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子奋姿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

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