iOS 利用KeyChain+ IDFV + BundleID 来作为UUID,保证传给服务端的UUID唯一
- 查了相关资料,发现只有KeyChain + IDFV可以保证UUID唯一,参考以下代码 , UICKeyChainStore
+ (NSString*)identifierForVender{
UICKeyChainStore *keyChain = [UICKeyChainStore keyChainStore];
NSString *bundleID = [[NSBundle mainBundle] bundleIdentifier];
bool keyExist = [keyChain contains:bundleID];
NSString *uuidStr = nil;
if (keyExist) {
uuidStr = [keyChain stringForKey:bundleID];
return uuidStr;
}
uuidStr = [[[[UIDevice currentDevice] identifierForVendor] UUIDString] stringByAppendingString:bundleID];
NSLog(@"uuidStr2:%@",uuidStr);
[keyChain setString:uuidStr forKey:bundleID];
return uuidStr;
}
- 对于同一个设备上的com.company.app1 和com.company.app2 含有相同的IDFV,所以在最后再拼接一个BundleID即可标志整个UUID唯一(服务端根据这个UUID映射Token,这样尽管用户重装APP,UUID不变,覆盖旧的Token即可)
- IDFV会变化的几种情况(参考)
- 变化的情况:删除手机上所有相同Vendor后再安装新的,TestFlight安装的,还有ad-hoc安装的;
iOS 利用KeyChain+ IDFV + BundleID 来作为UUID,保证传给服务端的UUID唯一的更多相关文章
- 利用python3.5 构建流媒体后台音视频切换的服务端程序
#!/usr/bin/env python3.5.0 # -*- coding:utf8 -*- import os,sys,socket,hashlib,time,select,threading, ...
- Android上传图片到服务器,服务端利用.NET WCFRest服务读取文件的解决方案
在项目中遇到要将Android设备拍摄的照片上传的服务器,将文件保存在服务器本地的文件夹中,数据库中保存的是图片文件名.整个上传是将图片生成二进制流通过HTTP请求上传到服务端,服务端是基于.NET环 ...
- IOS - UDID IDFA IDFV MAC keychain
在开发过程中,我们经常会被要求获取每个设备的唯一标示,以便后台做相应的处理.我们来看看有哪些方法来获取设备的唯一标示,然后再分析下这些方法的利弊. 具体可以分为如下几种: UDID IDFA IDFV ...
- iOS 使用Keychain 保存 用户名和密码到 本地
iOS 使用Keychain 保存 用户名和密码到 本地 之前曾把一些简单的数据保存在了plist,文件,及NsuserDefault里面, 但是如果要保存密码之类的,保存在本地就很不安全了: 但是利 ...
- Xamarin.iOS - 利用Settings插件与EAIntroView制作App的欢迎界面
Xamarin.iOS - 利用Settings插件与EAIntroView制作App的欢迎界面 关于欢迎界面 很多App第一次启动都会有一个欢迎界面,欢迎界面往往决定这用户对App的第一映像,所以欢 ...
- iOS利用Application Loader打包提交到App Store时遇到错误The filename 未命名.ipa in the package contains an invalid character(s). The valid characters are:A-Z ,a-z,0-9,dash,period,underscore,but the name cannot start w
iOS利用Application Loader打包提交到App Store时遇到错误: The filename 未命名.ipa in the package contains an invalid ...
- iOS运用keychain 把identifierForVendor当成唯一标识。替换advertisingIdentifier
iOS运用keychain 结合[[[UIDevice currentDevice] identifierForVendor] UUIDString] 取得设备唯一标识 NSString *ident ...
- UIView封装动画--iOS利用系统提供方法来做转场动画
UIView封装动画--iOS利用系统提供方法来做转场动画 UIViewAnimationOptions option; if (isNext) { option=UIViewAnimationOpt ...
- UIView封装动画--iOS利用系统提供方法来做关键帧动画
iOS利用系统提供方法来做关键帧动画 ios7以后才有用. /*关键帧动画 options:UIViewKeyframeAnimationOptions类型 */ [UIView animateKey ...
随机推荐
- C语言——链式存储实现栈的基本运算算法
Lkstack.h // 链栈的定义 typedef struct node { int data; struct node *next; }LkStk; main.c #include <st ...
- Reporting Service 2005 迁移 到 2008
1. 备份ReportServer 和ReportServerTempDB 的数据库. 2. 在Reporting Services Configuration Manager 中备份Encrypti ...
- Python with VS Code
1. 基本的代码结构为: 2.
- Android Fragment重要函数
Fragment的常用函数: 一.Fragment对象 1.void setArguments(Bundle args); 这个函数为Fragment提供构造参数(也就是数据),参数以Bundle类型 ...
- SSM 框架-02-MyEclipse 2017 安装与破解
SSM 框架-02-MyEclipse 2017 安装与破解 现在在学J2EE,然后使用的工具就是 MyEclipse,现在就抛弃 Eclipse 了,我就不多说它俩的区别了,但是 MyEclipse ...
- Springmvc和Mybatis中常用的注解
使用注解来构造IoC容器 用注解来向Spring容器注册Bean.需要在applicationContext.xml中注册<context:component-scan base-package ...
- Azure Linux 虚机上配置 RAID 的常见问题及解决方案
简介 独立硬盘冗余阵列(RAID, Redundant Array of Independent Disks),简称磁盘阵列.能增强数据集成度,增强容错功能,增加处理量或容量.详情参见这篇文章. 配置 ...
- CentOS随笔 - 3.CentOS7安装Oracle 11g xe
前言 转帖请注明出处: http://www.cnblogs.com/Troy-Lv5/ 由于手上很多项目都是采用Oracle在进行开发, 所以安装Oracle成为必然. 当然有朋友会想为什么不安装1 ...
- 【Oracle】Update方法
1.单表更新 update customers set city_name='山西省太原市' where city_name='山西太原' 2.两表(多表)关联update -- 被修改值由另一个表运 ...
- Oracle SQL语句操作数字:取整、四舍五入及格式化
用oracle sql对数字进行操作: 取上取整.向下取整.保留N位小数.四舍五入.数字格式化 取整(向下取整): select floor(5.534) from dual;select trunc ...