iOS8推送訊息的快速回複處理

來源:互聯網
上載者:User

標籤:

    • iOS8擁有了全新的通知中樞,有全新的通知機制。當螢幕頂部收到推送時只需要往下拉,就能看到快速控制項目介面,並不需要進入該應用才能操作。在鎖定畫面,對於推送項目也可以快速處理。基本上就是讓使用者盡量在不離開當前頁面的前提下處理推送資訊,再次提高處理效率。

      能夠進行直接互動的簡訊、郵件、日曆、提醒,第三方應用,可以讓你不用進入程式就能進行快捷操作,並專註於手中正在做的事情。

      在通知橫幅快速回複資訊,不用進入簡訊程式; 可直接拒絕或接受郵件邀請; 可對提醒進行標記為完成或延遲; 當第三方應用程式更新介面後便可直接對應用進行快速控制項目。

       

      最近研究了下iOS8的官方文檔,對這項功能進行了鑽研,基本上效果已經出來。因為遠程訊息推送比較繁瑣,需要後台支援,所以我用本地推送來代替的,基本上它們要調用的代理方法類似。長話短說,下面我就說下基本的流程:

      1.建立訊息上面要添加的動作(按鈕的形式顯示出來)

       

      view sourceprint?01.UIMutableUserNotificationAction *action = [[UIMutableUserNotificationAction alloc] init];02.action.identifier = @"action";//按鈕的標示03.[email protected]"Accept";//按鈕的標題04.action.activationMode = UIUserNotificationActivationModeForeground;//當點擊的時候啟動程式05.//    action.authenticationRequired = YES;06.//    action.destructive = YES;07. 08.UIMutableUserNotificationAction *action2 = [[UIMutableUserNotificationAction alloc] init];  //第二按鈕09.action2.identifier = @"action2";10.[email protected]"Reject";11.action2.activationMode = UIUserNotificationActivationModeBackground;//當點擊的時候不啟動程式,在幕後處理12.action.authenticationRequired = YES;//需要解鎖才能處理,如果action.activationMode = UIUserNotificationActivationModeForeground;則這個屬性被忽略;13.action.destructive = YES;

       

      2.建立動作(按鈕)的類別集合

      view sourceprint?1.UIMutableUserNotificationCategory *categorys = [[UIMutableUserNotificationCategory alloc] init];2.categorys.identifier = @"alert";//這組動作的唯一標示3.[categorys setActions:@[action,action2] forContext:(UIUserNotificationActionContextMinimal)];
      3.建立UIUserNotificationSettings,並設定訊息的顯示類類型
      view sourceprint?1.UIUserNotificationSettings *uns = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound) categories:[NSSet setWithObjects:categorys, nil]];

       

      4.註冊推送

      view sourceprint?1.[[UIApplication sharedApplication] registerForRemoteNotifications];2.[[UIApplication sharedApplication] registerUserNotificationSettings:uns];

       

      5.發起本地推送訊息

      view sourceprint?01.UILocalNotification *notification = [[UILocalNotification alloc] init];02.notification.fireDate=[NSDate dateWithTimeIntervalSinceNow:5];03.notification.timeZone=[NSTimeZone defaultTimeZone];04.[email protected]"測試推送的快捷回複";05.notification.category = @"alert";06.[[UIApplication sharedApplication]  scheduleLocalNotification:notification];07. 08.//用這兩個方法判斷是否註冊成功09.// NSLog(@"currentUserNotificationSettings = %@",[[UIApplication sharedApplication] currentUserNotificationSettings]);10.//[[UIApplication sharedApplication] isRegisteredForRemoteNotifications];

       

      6.在AppDelegate.m裡面對結果進行處理

      view sourceprint?01.//本地推播通知02.-(void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings03.{04.//成功註冊registerUserNotificationSettings:後,回調的方法05.NSLog(@"%@",notificationSettings);06.}07. 08.-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification09.{10.//收到本地推送訊息後調用的方法11.NSLog(@"%@",notification);12.}13. 14.-(void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forLocalNotification:(UILocalNotification *)notification completionHandler:(void (^)())completionHandler15.{16.//在非本App介面時收到本地訊息,下拉訊息會有快捷回複的按鈕,點擊按鈕後調用的方法,根據identifier來判斷點擊的哪個按鈕,notification為訊息內容17.NSLog(@"%@----%@",identifier,notification);18.completionHandler();//處理完訊息,最後一定要調用這個代碼塊19.}20. 21.//遠程推播通知22.-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken23.{24.//向APNS註冊成功,收到返回的deviceToken25.}26. 27.-(void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error28.{29.//向APNS註冊失敗,返回錯誤資訊error30.}31. 32.-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo33.{34.//收到遠程推播通知訊息35.}36. 37.-(void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo completionHandler:(void(^)())completionHandler38.{39.//在沒有啟動本App時,收到伺服器推送訊息,下拉訊息會有快捷回複的按鈕,點擊按鈕後調用的方法,根據identifier來判斷點擊的哪個按鈕40.}


      運行之後要按shift + command +H,讓程式推到後台,或者按command+L讓模擬器鎖屏,才會看到效果!

      如果是程式退到後台了,收到訊息後下拉訊息,則會出現剛才添加的兩個按鈕;如果是鎖屏了,則出現訊息後,左劃就會出現剛才添加的兩個按鈕。

      效果如下:

       

      現在只是能讓訊息中顯示出按鈕的形式,帶輸入框的還在研究中,如果大家研究出來了,也謝謝能分享一下啊,大家一起提高!

      代碼:https://github.com/ios44first/PushDemo

      地址,謝謝 http://blog.csdn.net/yujianxiang666/article/details/35260135

iOS8推送訊息的快速回複處理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.