日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS 远程通知(Remote Notification)和本地通知(Local Notification)

發布時間:2024/4/17 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS 远程通知(Remote Notification)和本地通知(Local Notification) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  ios通知分為遠程通知和本地通知,遠程通知需要連接網絡,本地通知是不需要的,不管用戶是打開應用還是關閉應用,我們的通知都會發出,并被客戶端收到

  我們使用遠程通知主要是隨時更新最新的數據給用戶,使用本地通知主要是提醒用戶來完成一些任務

  

  遠程通知 Remote Notification:

  其主要的工作原理為:客戶端發送自己的UUID和Bundle ID給蘋果的APNs服務器-->蘋果的APNs服務器加密后返回一個deviceToken給客戶端-->客戶端拿到devideToken后將其發送給app公司提供的服務器-->此服務器將客戶端的deviceToken存儲到數據庫-->當服務器要發送遠程通知給客戶端的時候,會在數據庫中拿到此客戶端的deviceToken-->發送數據到蘋果的APNs服務器,然后再發送到客戶端

  遠程通知是需要真機的,另外還需要去蘋果開發者中心申請證書:真機調試證書,遠程推送證書(要在哪臺電腦上調試或發布哪個app),描述文件證書(哪臺電腦利用哪個設備調試哪個app)

  我們可以使用PushMebaby來模擬服務器,也可以利用第三方軟件來發送通知如Jpush等

  下面是代碼的實現:

1 -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 2 { 3 if ([UIDevice currentDevice].systemVersion.doubleValue < 8.0){ // 小于ios8 4 5 UIRemoteNotificationType type = UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeBadge; 6 7 // 系統自動發送UUID和Bundle ID到蘋果APNs服務器 8 [application registerForRemoteNotificationTypes:type]; 9 }else{ // 大于等于ios8 10 11 UIUserNotificationType type = UIUserNotificationTypeBadge | UIUserNotificationTypeAlert | UIUserNotificationTypeSound; 12 13 UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:type categories:nil]; 14 // 通知類型 15 [application registerUserNotificationSettings:settings]; 16 17 // 注冊通知 18 [application registerForRemoteNotifications]; 19 } 20 21 // 可以獲取到userInfo數據 22 NSDictionary *userInfo = launchOptions[UIApplicationLaunchOptionsAnnotationKey]; 23 24 return YES; 25 } 26 27 // 獲得deviceToken 28 - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken 29 { 30 NSLog(@"%@",deviceToken); 31 } 32 33 // ios7之前調用,接收到遠程通知的內容會調用 34 // 程序是打開狀態,不管前臺還是后臺,會調用這個方法 35 // 如果程序是關閉狀態不會調用這個,會調用application: didFinishLaunchingWithOptions: 36 - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 37 { 38 NSLog(@"%@",userInfo); 39 } 40 41 // ios7之后調用,如果接收到遠程通知的內容會調用這個方法 42 - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler 43 { 44 // 這個方法需要調用這個block來通知系統更新UI界面 45 // UIBackgroundFetchResultNewData, 接收到數據 46 // UIBackgroundFetchResultNoData, 沒有接收到數據 47 // UIBackgroundFetchResultFailed 接收數據失敗 48 completionHandler(UIBackgroundFetchResultNewData); 49 50 }

  

  本地通知 Local Notification

  基本屬性和方法:

  屬性:

  • 指定通知發送的時間:NSDate *fireDate?
  • 指定發送通知的時區:NSTimeZone *timeZone
  • 重復的周期: repeatInterval
  • 通知內容:NSString *alertBody?????
  • 鎖屏狀態的標題:NSString *alertAction
  • 點擊通知之后的啟動圖片:NSString *alertLaunchImage
  • 收到通知播放的音樂:NSString *soundName
  • 圖標提醒數字:NSInteger applicationIconBadgeNumber
  • 額外的信息:NSDictionary *userInfo

  方法:

  • 立即執行:- (void)presentLocalNotificationNow:(UILocalNotification *)notification
  • 注冊通知,根據指定發送時間執行:- (void)scheduleLocalNotification:(UILocalNotification *)notification
  • 取消單個通知:- (void)cancelLocalNotification:(UILocalNotification *)notification
  • 取消所有通知:- (void)cancelAllLocalNotifications

  下面是代碼實現:

1 // 創建本地通知對象 2 UILocalNotification *noti = [[UILocalNotification alloc] init]; 3 4 // 指定通知發送的時間10s 5 noti.fireDate = [NSDate dateWithTimeIntervalSinceNow:10.0f]; 6 // 指定時區 7 noti.timeZone = [NSTimeZone defaultTimeZone]; 8 // 指定通知內容 9 noti.alertBody = @"這是通知的內容"; 10 11 // 設置通知重復的周期(1分鐘) 12 noti.repeatInterval = NSCalendarUnitSecond; 13 14 // 指定鎖屏界面的信息 15 noti.alertAction = @"這是鎖屏界面的信息"; 16 17 // 設置點擊通知進入程序時候的啟動圖片 18 noti.alertLaunchImage = @"xxx"; 19 20 // 收到通知播放的音樂 21 noti.soundName = @"hehe.wav"; 22 23 // 設置應用程序的提醒圖標 24 noti.applicationIconBadgeNumber = 99; 25 26 // 注冊通知時可以指定將來點擊通知之后需要傳遞的數據 27 noti.userInfo = @{@"dogName":@"xx1", 28 @"weight":@(20) 29 }; 30 31 // 注冊添加通知 32 UIApplication *app = [UIApplication sharedApplication]; 33 [app scheduleLocalNotification:noti];

  注意:在ios8中需要提前注冊通知類型

?

1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 2 // Override point for customization after application launch. 3 4 // 注意: 在iOS8中, 必須提前注冊通知類型 5 if ([UIDevice currentDevice].systemVersion.doubleValue >= 8.0) { 6 UIUserNotificationType type = UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound; 7 UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:type categories:nil]; 8 // 注冊通知類型 9 [application registerUserNotificationSettings:settings]; 10 } 11 } 12 13 // 接收到本地通知時就會調用,前臺自動調用,后臺點擊通知后調用 14 - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification 15 { 16 NSLog(@"%@",notification.userInfo); 17 }

?

?

  

?

轉載于:https://www.cnblogs.com/GeekStar/p/4468408.html

總結

以上是生活随笔為你收集整理的iOS 远程通知(Remote Notification)和本地通知(Local Notification)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。