你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS編程技術 >> iOS 本地推送通知

iOS 本地推送通知

編輯:IOS編程技術

1.什麼是本地推送通知

  不需要聯網的情況下,應用程序經由系統發出的通知

2.本地推送的使用場景

  定時提醒,如玩游戲、記賬、鬧鐘、備忘錄等

3.實現本地推送通知的步驟

  1. 創建本地推送通知的對象UILocalNotification
  2. 設置本地推送通知對象的屬性
    • fireDate                                推送的時間
    • alertBody                              通知的內容
    • alertName                             鎖屏時的標題
    • soundName                           音效名稱
    • applicationIconBadgeNumber  徽章顯示的數字
    • timeZone                               時區
    • 等等

  3. 將通知排入到應用程序中

4.點擊通知內容的處理

  1. 應用沒有關閉,在後台
    1. 自動進入前台
    2. 自動調用AppDelegate下的didReceiveLocalNotification方法
  2. 應用已關閉
    1. 自動進入應用
    2. 自動執行AppDelegate下的didFinishLaunchingWithOptions方法

5.代碼

  1. 寫在AppDelegate.m中
    1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
          
          if ([UIDevice currentDevice].systemVersion.doubleValue >= 8.0) {//iOS8以後需要詢問用戶是否允許接收通知
              //一下代碼回實現的效果是
              //第一次運行程序,系統彈出一個提示框
              //詢問用戶是否允許接收通知
              UIUserNotificationType noteType = UIUserNotificationTypeAlert | UIUserNotificationTypeSound | UIUserNotificationTypeBadge;
              UIUserNotificationSettings *setting = [UIUserNotificationSettings settingsForTypes:noteType categories:nil];
              [application registerUserNotificationSettings:setting];
          }
          
          //如果是因為點擊查看了通知而啟動了應用程序
          //那麼通知的信息都會存在launchOptions參數中
          UILocalNotification *notification = launchOptions[UIApplicationLaunchOptionsLocalNotificationKey];
          if (notification != nil) {//點通知進來的
              UILabel *label = [[UILabel alloc]init];
              label.frame = CGRectMake(0, 40, 300, 200);
              label.backgroundColor = [UIColor blueColor];
              label.numberOfLines = 0;
              label.font =[UIFont systemFontOfSize:30];
              label.textColor = [UIColor whiteColor];
              label.text = [NSString stringWithFormat:@"3333333%@",notification.userInfo];
              [self.window.rootViewController.view addSubview:label];
              [application setApplicationIconBadgeNumber:0];
          }
          return YES;
      }
      
      
      /*
       1.App在前台,通知到了,直接自動執行該方法
       2.App在後台,通知到了,點擊查看通知,該方法才執行
       3.App已經退出,通知到了,點擊查看通知,此方法不執行,但是didFinishLaunchingWithOptions方法一定會被執行,通知傳入的參數也可以在launching方法中獲取到
       */
      - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
          UILabel *label = [[UILabel alloc]init];
          label.frame = CGRectMake(0, 250, 300, 200);
          label.backgroundColor = [UIColor grayColor];
          label.numberOfLines = 0;
          label.font =[UIFont systemFontOfSize:30];
          label.textColor = [UIColor whiteColor];
          //alertBody用於存儲顯示的通知的文字內容
          //uesrInfo用於存儲額外要傳遞的通知內容
          label.text = [NSString stringWithFormat:@"%@",notification.userInfo];
          [self.window.rootViewController.view addSubview:label];
          //去掉應用程序圖標中出現的紅色數字提醒
          [application setApplicationIconBadgeNumber:0];
      }
  2. 寫在注冊通知的位置
    1. //1.創建本地通知對象
          UILocalNotification *notification = [[UILocalNotification alloc] init];
          
          //2.設置通知的一些屬性
          notification.fireDate = [NSDate dateWithTimeIntervalSinceNow:10];//10秒後發通知
          notification.alertBody = @"這是一條新的通知";
          notification.userInfo = @{@"name":@"張三",
                                     @"age":@20
                                    };
          notification.applicationIconBadgeNumber = 2;
          
          //3.將通知添加到應用程序的日程清單中
          UIApplication *application = [UIApplication sharedApplication];
          [application scheduleLocalNotification:notification];

demo:https://github.com/TigerCui/LocalNotification.git

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved