最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS學習筆記之遠程推送、靜默推送與自定義消息推送

 更新時間:2018年08月15日 09:45:28   作者:冰風v落葉  
推送是各位iOS開發(fā)者們都會遇到的一個功能,下面這篇文章主要給大家介紹了關于iOS學習筆記之遠程推送、靜默推送與自定義消息推送的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下

遠程推送時 , 應用可能處于下列三種狀態(tài):

     (1) . 應用開啟時 , 應用在前臺

    (2) . 應用開啟時 , 應用在后臺

    (3) . 應用未啟動(應用被殺死)

從蘋果APNS服務器遠程推送時:

1 . 如果應用處于 (1) 狀態(tài) , 則不會發(fā)出聲音 , 會直接調(diào)用appDelegate的代理方法didReceiveRemoteNotification,此時如果想收到類似系統(tǒng)的彈窗提示,則需要自定義彈窗,提示音,振動(彈窗可以參考 : ForeNotification  (本地下載))

AudioServicesPlaySystemSound(1007);//系統(tǒng)提示音
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);//震動

2 . 如果應用處于 (2) 狀態(tài) , 則會發(fā)出提示音, 點擊推送消息 , 則會調(diào)用appDelegate的代理方法didReceiveRemoteNotification

3 . 如果應用處于 (3) 狀態(tài),則會發(fā)出提示音 , 點擊推送消息 , 則會開啟應用 , 在下面這個方法中會帶上launchOptions這個參數(shù),如果實現(xiàn)了application:didReceiveRemoteNotification:fetchCompletionHandler:這個方法,則會調(diào)用這個方法

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
 NSDictionary *remoteNotification = [launchOptions objectForKey: UIApplicationLaunchOptionsRemoteNotificationKey];

 if (remoteNotification) {
 //自定義的BOOL值,用來標記是從通知啟動的應用
 self.isLaunchedByNotification = YES;
 }else{

 }
 [self checkIsLaunchedByNotification];

 return YES;
}

收到遠程推送后 , 可以跳轉(zhuǎn)到消息界面 :

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
 NSDictionary *aps = [userInfo valueForKey:@"aps"];

 NSDictionary *alert = [aps valueForKey:@"alert"];

 NSString * body = alert[@"body"];

 if ([UIApplication sharedApplication].applicationState == UIApplicationStateActive) {
 //處于前臺時
 
 [EBForeNotification handleRemoteNotification:@{@"aps":@{@"alert":[NSString stringWithFormat:@"%@",body]}} soundID:1312];
 
 }else{
 
 //處于后臺時
 
 [self gotoMessageVC];
 }
}

#pragma mark - 檢測是否從通知欄啟動得應用

- (void)checkIsLaunchedByNotification{
 
 if (self.isLaunchedByNotification) {
 
 [self gotoMessageVC];
 
 }
}

#pragma mark - 點擊了通知菜單(當應用在前臺時,收到推送,點擊了自定義的彈窗,調(diào)用的方法)

- (void)clickBannerView:(NSNotification *)notification{
 
 NSDictionary * dict = notification.object;
 
 [self gotoMessageVC];
}

#pragma mark - 跳轉(zhuǎn)到消息界面(點擊通知菜單/點擊通知欄啟動應用時)

- (void)gotoMessageVC{
 
 if([self.window.rootViewController isEqual:self.tabBarController]){
 
 if([self.tabBarController.selectedViewController isKindOfClass:[UINavigationController class]]){
  UINavigationController * nav = self.tabBarController.selectedViewController;
  
  if (![nav.topViewController isKindOfClass:[MessagesViewController class]]) {
  
  MessagesViewController *messageVC = [[MessagesViewController alloc] init];
  
  messageVC.hidesBottomBarWhenPushed = YES;
  
  [nav.visibleViewController.navigationController pushViewController:messageVC animated:YES];
  }
 }
 }
}

靜默推送

應用想收到靜默推送需要滿足的條件:

1.應用在前臺/后臺 (應用被殺死就收不到了)

2.應用實現(xiàn)了

application:didReceiveRemoteNotification:fetchCompletionHandler:

3.如果僅僅實現(xiàn)了application:didReceiveRemoteNotification:,沒有實現(xiàn)application:didReceiveRemoteNotification:fetchCompletionHandler:,應用只有在前臺時才能收到靜默推送 , 應用在后臺時,收不到靜默推送

自定義消息推送

介紹: 極光推送提供了自定義消息推送 , 這種推送只有當應用在 前臺 時才能收到 ; 當應用在 后臺/被殺死 時,這時候的自定義消息被保存下來,直到應用處于前臺時,應用才會收到.

使用場景: 當需要在前臺處理大量數(shù)據(jù)的時候,可以使用自定義消息,例如應用某個模塊需要更新了,這時候后臺發(fā)送個自定義消息,等到應用啟動了就可以自動去下載

 // 使用自定義消息,需要在通知中心注冊
 // 注冊通知
 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveJPushCustomMessage:) name:kJPFNetworkDidReceiveMessageNotification object:nil];

// 接收到JPush的自定義消息推送
- (void)receiveJPushCustomMessage:(NSNotification *)notification {
 
 NSDictionary *userInfo = [notification userInfo];
 
 NSString *title = [userInfo valueForKey:@"title"];
 
 NSString *content = [userInfo valueForKey:@"content"];
 
 NSDictionary *extra = [userInfo valueForKey:@"extras"];
 
}

總結(jié):

1.應用在后臺/前臺/被殺死,都可以收到普通的遠程推送

2.應用被殺死時,可以通過Background Fetch短時間喚醒應用

3.應用在后臺/前臺時,可以通過靜默推送,修改一些數(shù)據(jù)

4.自定義消息應用在

好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

  • iOS中解決Xcode 8控制臺亂碼的方式

    iOS中解決Xcode 8控制臺亂碼的方式

    這篇文章給大家介紹了iOS中解決Xcode 8控制臺亂碼的方式,文中給出了詳細解決步驟,相信對大家的理解和學習很有幫助,有需要的朋友們下面來一起看看吧。
    2016-10-10
  • iOS對象指針和基礎數(shù)據(jù)類型的強轉(zhuǎn)詳解

    iOS對象指針和基礎數(shù)據(jù)類型的強轉(zhuǎn)詳解

    最近在做一些小功能,忽然發(fā)現(xiàn)有的基礎數(shù)據(jù)轉(zhuǎn)換居然都忘記了。于是想著要趕緊整理下記下來!本文就是記錄的一些內(nèi)容,主要介紹了iOS中對象指針和基礎數(shù)據(jù)類型的強轉(zhuǎn),有需要的朋友們可以參考借鑒,下面來一起學習學習吧。
    2016-11-11
  • IOS 陀螺儀開發(fā)(CoreMotion框架)實例詳解

    IOS 陀螺儀開發(fā)(CoreMotion框架)實例詳解

    這篇文章主要介紹了IOS 陀螺儀開發(fā)實例詳解的相關資料,介紹了螺旋儀參數(shù)意義及CoreMotion框架,需要的朋友可以參考下
    2016-10-10
  • iOS適配https證書問題(AFNetworking3.0為例)

    iOS適配https證書問題(AFNetworking3.0為例)

    本篇文章主要介紹了iOS適配https問題(AFNetworking3.0為例)。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • IOS10 遠程推送適配詳細介紹

    IOS10 遠程推送適配詳細介紹

    這篇文章主要介紹了IOS10 遠程推送適配詳細介紹的相關資料,iOS10推送新增了UserNotifications Framework,這里主要介紹如何實現(xiàn)遠程推送,需要的朋友可以參考下
    2016-12-12
  • iOS Objective-c實現(xiàn)左右滑動切換頁面

    iOS Objective-c實現(xiàn)左右滑動切換頁面

    這篇文章主要為大家詳細介紹了iOS Objective-c實現(xiàn)左右滑動切換頁面,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • iOS中TableView如何統(tǒng)一數(shù)據(jù)源代理詳解

    iOS中TableView如何統(tǒng)一數(shù)據(jù)源代理詳解

    這篇文章主要給大家介紹了關于iOS中TableView如何統(tǒng)一數(shù)據(jù)源代理的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧
    2018-07-07
  • iOS組件化開發(fā)實戰(zhàn)記錄

    iOS組件化開發(fā)實戰(zhàn)記錄

    這篇文章主要給大家介紹了關于iOS組件化開發(fā)的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-02-02
  • iOS 請求權(quán)限封裝類的實例代碼

    iOS 請求權(quán)限封裝類的實例代碼

    下面小編就為大家分享一篇iOS 請求權(quán)限封裝類的實例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • ios xcode警告與錯誤的分析總結(jié)

    ios xcode警告與錯誤的分析總結(jié)

    這篇文章主要給大家介紹了關于ios xcode警告與錯誤的相關資料,文中通過示例代碼介紹的非常詳細,對各位iOS開發(fā)者們具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-04-04

最新評論

额济纳旗| 荥阳市| 五寨县| 麻城市| 昂仁县| 宁夏| 隆安县| 独山县| 普洱| 陵水| 永兴县| 上饶市| 无棣县| 栖霞市| 嘉荫县| 玉溪市| 临澧县| 通榆县| 松原市| 双柏县| 荣成市| 深州市| 革吉县| 江阴市| 凤翔县| 阜南县| 南投市| 虞城县| 遵义市| 文水县| 于都县| 安宁市| 内丘县| 安阳市| 四川省| 怀柔区| 利川市| 蓬安县| 平昌县| 班戈县| 车险|