1. 程式人生 > >ios-利用本地通知跳轉到應用程式指定介面

ios-利用本地通知跳轉到應用程式指定介面

我們如果想要點選按鈕跳轉到相應的介面的話我們可以這麼做,舉個例子,就拿UITabBarController來說事,控制器如下所示


比如說我們在前臺的時候,我們可以通過傳送通知就能實現應用程式的跳轉,我們可以傳送以下的通知,然後去拼接UNMutableNotificationContent的userInfo內容,我們可以把下面的程式碼新增到一個UIButton的點選方法中。

 UNMutableNotificationContent* content = [[UNMutableNotificationContent alloc] init];
  content.title = @"sss";
  content.body = @"哈哈";
  content.badge = @5;
  content.sound = [UNNotificationSound defaultSound];
  //重點是裡面的selectIndex的值 
  content.userInfo = @{@"selectIndex":@(1)};
  UNTimeIntervalNotificationTrigger * trigger = [UNTimeIntervalNotificationTrigger triggerWithTimeInterval:5 repeats:NO];
  //包裝成通知請求
   UNNotificationRequest * request = [UNNotificationRequest requestWithIdentifier:@"tongzhi" content:content trigger:trigger];
    
    //通知中心新增這個通知請求
    [center addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) {
        
    }];
然後我們可以去實現下面這個代理方法,在裡面進行處理,這樣在前臺的時候就可以做到點選按鈕可以調到指定的頁面
-(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler
{

    
     //當然這裡需要去判斷userInfo的值,我這裡就先不去判斷了,準確的話一定要進行判斷的,畢竟通知有很多個
    //在這裡也可以做頁面跳轉
    UITabBarController * vc = (UITabBarController *)self.window.rootViewController;
    
   vc.selectedIndex = [notification.request.content.userInfo[@"selectIndex"]intValue];
    
    //這裡設定沒有提示
    completionHandler(UNNotificationPresentationOptionNone);
}
我們如果想要後臺做點選通知就能跳轉到指定的介面的話就要去實現下面那個代理方法
-(void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response 
withCompletionHandler:(void (^)(void))completionHandler
{
   //這裡也是需要去判斷userInfo的值的,我這裡也省略了
   UITabBarController * vc = (UITabBarController *)self.window.rootViewController;

    vc.selectedIndex = [response.notification.request.content.userInfo[@"selectIndex"]intValue];
    
    completionHandler();

}
這兩個代理方法都是在UNUserNotificationCenterDelegate,這個協議裡面的,我們一般是設定UNUserNotificationCenter的代理,代理需要遵守UNUserNotificationCenterDelegate這個協議,然後我們再去實現上面兩個代理方法。