IOS - 唯一标识符的获得和更新
苹果公司不可能让其他人获得个人终端的唯一标识符,所以一个终端给另一个终端发送消息,必须经过苹果的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
IOS - 唯一标识符的获得和更新的更多相关文章
- IOS的唯一标识符问题(转)
引用地址 http://www.zhihu.com/question/22599526/answer/21938878 网上搜了下IOS手机标志的种类,直接引用过来. UDID [[UIDevice ...
- ionic获取ios唯一设备id的解决方案
经常有朋友来问这个问题. 每次都去解释这个问题也浪费不少时间, 所以还是开一篇文章, 把这个问题说清楚吧. 先纠正一个误区吧: 有同学可以通过ionic natvie的device插件获取. 我们在文 ...
- iPhone唯一标识符
为了区分iPhone设备,就要用到iPhone的唯一标识符唯一标识符包括:UDID(唯一设备标识符).identifierForVendor(供应商标识符).advertisingIdentifier ...
- GUID全局唯一标识符
全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符.GUID主要用于在拥有多个节点.多台计算机的网络或系统中. ...
- nodejs生成UID(唯一标识符)——node-uuid模块
unique identifier 惟一标识符 -->> uid 在项目开发中我们常需要给某些数据定义一个唯一标识符,便于寻找,关联. node-uuid模块很好的提供了这个 ...
- GUID全局唯一标识符相关知识了解
全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符.GUID主要用于在拥有多个节点.多台计算机的网络或系统中.在理想情 ...
- 全局唯一标识符(GUID)
全局唯一标识符,简称GUID(发音为/ˈɡuːɪd/或/ˈɡwɪd/),是一种由算法生成的唯一标识,通常表示成32个16进制数字(0-9,A-F)组成的字符串,如:{21EC2020-3AEA-106 ...
- 高并发 php uniqid 用md5生成不重复唯一标识符方案
高并发 php uniqid 用md5生成不重复唯一标识符方案uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID.uniqid(prefix,more_entropy)prefix 可 ...
- [ActionScript 3.0] AS3 GUID(全局唯一标识符)
package com.controls { import flash.display.Sprite; import flash.system.Capabilities; public class G ...
随机推荐
- JS/HTML 保存图片到本地:HTML <a> download 属性
JS如何保存图片到本地呢?自己百度一下吧! 这里想要说的是,可以利用 HTML 的 <a> 标签 来是实现保存图片到本地的功能,参考代码如下: <a href="http: ...
- 解决 Mac Pro 用 Excel 打开 CSV 文件不能正常显示的问题
在做系统后台的时候,往往会有导出系统信息(如,用户信息)功能,一般导出为CSV文件. 先前在 Windows 下,导出的CSV文件用 Excel 打开能正常显示,可现在在 Mac 系统中,显示一团乱, ...
- sql2008以上行转列的方法
SELECT [column1],[column2],[column3],[column4],[column5]FROM (select name,id from [tableName] where ...
- HDU 1086You can Solve a Geometry Problem too(判断两条选段是否有交点)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1086 判断两条线段是否有交点,我用的是跨立实验法: 两条线段分别是A1到B1,A2到B2,很显然,如果 ...
- .net 默认时间格式不正确
经测试发现,有时通过在“日期.时间.语言和区域设置”里面设置是无效的. 对应键值为HKEY_LOCAL_MACHINE"SOFTWARE"Microsoft"OLEAUT ...
- navigationcontroller手势翻页和navigationbar
一. 系统导航默认手势 #import "CBNavigationController.h" //手势返回 @interface CBNavigationController () ...
- SQL手册
来自 W3School 的 SQL 快速参考.可以打印它,以备日常使用. SQL 语句 语句 语法 AND / OR SELECT column_name(s)FROM table_nameWHERE ...
- caffe学习系列(4):视觉层介绍
视觉层包括Convolution, Pooling, Local Response Normalization (LRN), im2col等层. 这里介绍下conv层. layer { name: & ...
- (转)android中颜色矩阵colormatrix
原文地址:http://www.cnblogs.com/menlsh/archive/2013/02/03/2890888.html 在Android中,对图像进行颜色方面的处理,如黑白老照片.泛黄旧 ...
- 37 网络相关函数(五)——live555源码阅读(四)网络
37 网络相关函数(五)——live555源码阅读(四)网络 37 网络相关函数(五)——live555源码阅读(四)网络 简介 10)MAKE_SOCKADDR_IN构建sockaddr_in结构体 ...