deviceToken的獲取(一)


1.獲得deviceToken的過程


 

 

1>客戶端向蘋果服務APNS,發送設備的UDID和英語的Bundle Identifier.
2>經蘋果服務器加密生成一個deviceToken
3>將當前用戶的deviceToken(用戶標識),發送給自己應用的服務器
4>自己的服務器,將得到的deviceToken,進行保存

2.利用deviceToken進行數據傳輸,推送通知


 

5>需要推送的時候,將消息和deviceToken一起發送給APNS,蘋果服務器,再通過deviceToken找到用戶,並將消息發給用戶


 

這里不再演示關於證書的配置, 簡單的只進行說明步驟:
1> 創建明確的AppID,只有明確的AppID才能進行一些特殊的操作
2>真機調試的APNS SSL證書
3>發布程序的APNS SSL證書
4>生成描述文件
[依次安裝證書, 再裝描述]

注冊遠程推送通知:

1.客戶端如果想要接收APNs的遠程推送通知,必須先進行注冊(得到用戶授權)
一般在APP啟動完畢后就馬上進行注冊

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { if ([[UIDevice currentDevice].systemVersion doubleValue] >= 8.0) { // 1.注冊UserNotification,以獲取推送通知的權限 UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge categories:nil]; [application registerUserNotificationSettings:settings]; // 2.注冊遠程推送 [application registerForRemoteNotifications]; } else { [application registerForRemoteNotificationTypes:UIRemoteNotificationTypeNewsstandContentAvailability | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound]; } return YES; }

2.注冊成功后, 調用AppDelegate的方法,獲取到用戶的deviceToken

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { // <32e7cf5f 8af9a8d4 2a3aaa76 7f3e9f8e 1f7ea8ff 39f50a2a e383528d 7ee9a4ea> // <32e7cf5f 8af9a8d4 2a3aaa76 7f3e9f8e 1f7ea8ff 39f50a2a e383528d 7ee9a4ea> NSLog(@"%@", deviceToken.description); }

3.點擊推送通知,和本地一樣有兩種狀況.
1> app沒有關閉,只是一直隱藏在后台
讓app進入前台, 並調用下面的方法(app沒有重新啟動)
過期的方法:

// 當接受到遠程退職時會執行該方法(當進入前台或者應用程序在前台) - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { NSLog(@"%@", userInfo); UIView *redView = [[UIView alloc] init]; redView.backgroundColor = [UIColor redColor]; redView.frame = CGRectMake(100, 100, 100, 100); [self.window.rootViewController.view addSubview:redView]; }

蘋果系統建議使用下面的方法:

/* 1.開啟后台模式 2.調用completionHandler,告訴系統你現在是否有新的數據更新 3.userInfo添加一個字段:"content-available" : "1" : 只要添加了該字段,接受到通知都會在后台運行 */ - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { NSLog(@"%@", userInfo); UIView *redView = [[UIView alloc] init]; redView.backgroundColor = [UIColor redColor]; redView.frame = CGRectMake(100, 100, 100, 100); [self.window.rootViewController.view addSubview:redView]; completionHandler(UIBackgroundFetchResultNewData); }

2>app已經關閉,需要重新開啟,---基本實現方法和本地通知一樣


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM