iOS开发:设备唯一标识与全局变量

Posted freeself

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS开发:设备唯一标识与全局变量相关的知识,希望对你有一定的参考价值。

这里记录两个ios开发中经常用到的知识点,一个是唯一标识,一个是全局变量。

(1)唯一标识

唯一标识一台设备(比如iPhone、iPad等)是一个基本的实现与业务上的需求,因为这个唯一标识在许多场景都需要使用到,比如用来统计(日活、总用户数等),再比如用作默认的账号,等等。

udid,曾经是唯一标识的首选,比如这样取得:

NSString *UDID = [[UIDevice currentDevice] uniqueIdentifier];

但是,udid已经被苹果拒绝使用,所以这个不是小程的选择。同样,mac地址,也是被苹果封杀的。

其它的办法,比如IDFA、IDFV、UUID,都有各自的缺陷,但并不意味不能使用--可以组合起来,并结合keychain来使用,从而尽可能规避出现的缺陷。

这样的方案已经有人实现,比如这个项目:
https://github.com/herody/UQIDDemo

引用以上这个项目UQID目录的文件,即可获取设备的唯一标识,比如这样使用:
技术图片

(2)全局变量

为了便利与信息同步,项目中经常需要使用一些全局变量。

全局变量的设计,一般有两个办法。

办法一,在AppDelegate.h中定义全局变量,也就是在类AppDelegate中增加全局变量,比如:

@property (strong, nonatomic) UIWindow *window;
@property (nonatomic, assign)BOOL firstrun;

然后,在任何地方,都可以访问AppDelegate,比如:

AppDelegate *myDelegate = [[UIApplication sharedApplication] delegate];
myDelegate.firstrun = YES;

办法二,使用新的文件,定义一个单例的类,比如在globalvar.h中这样定义:
技术图片

在globalvar.m中这样定义:
技术图片

之后,就可以在任何地方使用这些全局变量--通过单例函数来使用即可,比如这样:
技术图片


技术图片

以上是关于iOS开发:设备唯一标识与全局变量的主要内容,如果未能解决你的问题,请参考以下文章

如何唯一的标识一台Android设备?

设备特定的唯一标识符

iOS中static的作用

iOS全局变量的声明和使用

iOS 瓶颈:全局变量与核心数据或属性列表

在Postman中啥是全局变量与环境变量?