IOS-唯一标识符的获得和更新

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

苹果公司不可能让其他人获得个人终端的唯一标识符,所以一个终端给另一个终端发送消息,必须经过苹果的APNS(Apple Push Notification Service)....而且苹果为了防止苹果用户的唯一标示符泄露,会更新..我们在APNS存储的唯一标识符

1. 需要告诉苹果的服务器,当前应用程序需要接收远程通知

2. 接收到苹果返回的设备代号

3. 本地保存的设备代号和接收到得苹果服务器返回的设备代号对比,当Token发生变化时,提交给服务器保存新的Token

4. 将Token保存至系统偏好

#import "ITAppDelegate.h"

@implementation ITAppDelegate

/**

远程消息推送必须在真机上运行!

*/

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

// 需要告诉苹果的服务器,当前应用程序需要接收远程通知

[application registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound];

return YES;

}

#PRagma mark - 获取到设备的代号(令牌)

// 接收到苹果返回的设备代号

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken

{

// 第一次运行获取到DeviceToken时间会比较长!

NSLog(@"%@", deviceToken);

// 将deviceToken转换成字符串,以便后续使用

NSString *token = [deviceToken description];

NSLog(@"description %@", token);

// =======================================================

// 如果DeviceToken发生变化,需要通知服务器

// 每次都记录住从服务器获取到得DeviceToken

// 再次获取时进行比对

// 从偏好设置取出当前保存的Token

NSString *oldToken = [[NSUserDefaults standardUserDefaults] objectForKey:@"DeviceToken"];

// 当Token发生变化时,提交给服务器保存新的Token

// if (![oldToken isEqualToString:token]) {

//

// // 将deviceToken通过Post请求,提交给自己的服务器即可!

// // 发送Post请求

// NSURL *url = [NSURL URLWithString:@"公司后台服务器的网址"];

// NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10.f];

//

// request.HTTPMethod = @"POST";

// request.HTTPBody = @"转换后的设备ID以及其他信息[之前的Token]";

//

// // SQL: update t_deviceTable set token = newToken where token = oldToken;

//

// // 同步:必须执行完才能继续

// // 异步:直接交给其他线程工作,不干扰主线程工作,用户也感觉不到延迟

// [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

// // 偷偷的将用户信息传送到公司的服务器

// }];

// }

// 将Token保存至系统偏好

[[NSUserDefaults standardUserDefaults] setObject:token forKey:@"DeviceToken"];

}

@end

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航