iOS开发简记(5):设备唯一标识与全局变量

Unity3d获取IOS设备唯一标识,以及IDFA 之前苹果设备上获取唯一标识符,可以通过获取Mac地址。但是现在苹果把这条路堵死了。 不过没关系,苹果已经给出了替代方案,可以调用相应的接口,生成一串字符串,用生成的 字符串来代替之前的Mac地址。 Unity端 新建个脚本,然后绑定到一个对象上,脚本代码如下,这片代码我就不多说了,不懂得自己 去看下IOS和Unity的互调。弄完后导出IOS工程。 using Unity 阅读详情

这里记录两个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客户端源码、API源码呈献给大家,完整的示例大家可以暂时到AppStore下载安装“知音”。

iOS设备唯一标识替代方案详解:OpenUDID原理与演进 IDFA(Identifier for Advertisers)是苹果为移动广告生态设计的标准化设备唯一标识符,自iOS 6起引入,旨在替代已被禁用的UDID。与OpenUDID不同,IDFA由系统底层统一生成并维护,确保同一设备上所有应用在获得授权后可获取一致值。// Objective-C 获取 IDFA 示例} else {return nil;// 用户已关闭广告追踪代码说明是 AdSupport 框架中的核心类。 阅读详情

相关推荐

移动设备唯一标识获取指南与最佳实践

用户隐私保护已成为全球性的议题,多个法规和政策的制定,正反映着政府与社会对个人隐私权的重视。在国际层面,欧盟的通用数据保护条例(GDPR)以及美国加州消费者隐私法案(CCPA)等,为个人数据的安全与隐私权提供了法律保护。GDPR强调数据最小化原则和用户同意,要求企业必须明确说明数据用途,并获取用户的明确同意。而CCPA则赋予消费者更多的数据控制权,包括删除个人数据的权利以及拒绝其个人信息被出售的权利。中国的个人信息保护法(PIPL)也在2021年生效,标志着中国在个人隐私保护方面迈出了重要一步。

weixin_29607511的博客 1369

【工具类】Android获取平板物理唯一标识码

import java.io.UnsupportedEncodingException; import java.util.UUID; import com.vtion.ym.util.Constant; import android.content.Context; import android.content.SharedPreferences; import andr...

dianwei5413的博客 258

txt经纬度批量转面要素(附自定义ArcGIS工具箱方法)

当涉及大量txt坐标文件需要转换成面要素的时候,逐步操作工作量较大。本文由需求出发,以ArcGIS10.2为例,采用python脚本自定义ArcGIS工具,实现批量操作的目的。

m0_59216200的博客 1818

Android平板获取唯一标识DeviceId

Android设备获取唯一标识DeviceId import android.annotation.SuppressLint; import android.content.Context; import android.content.SharedPreferences; import android.provider.Settings; import android.telephony.Tel...

qq_35441893的博客 2025

在windows10/11中使用ipatool提取苹果app安装包ipa文件

本文介绍了在Windows10/11系统中使用ipatool工具下载苹果App安装包(.ipa)的详细步骤。首先需准备Windows电脑、AppleID账号并下载ipatool工具;具体操作包括:登录AppleID、搜索应用、获取购买授权、查看历史版本及下载指定版本。关键步骤强调获取授权的重要性,并提供了常用命令速查表,帮助用户完成从登录到下载的全过程。该教程适用于需要获取旧版本App或进行应用测试的场景。

zhengshaolin128的博客 2586

Maven的下载安装配置教程(详细图文)

目录 一、简单了解一下什么是Maven 二、maven的下载 三、maven的安装 四、maven的环境变量配置 五、setting文件配置 六、开发工具配置Maven 一、简单了解一下什么是Maven Maven就是一款帮助程序员构建项目的工具,我们只需要告诉Maven需要哪些Jar 包,它会帮助我们下载所有的Jar,极大提升开发效率。 1.Maven翻译为“专家“, ”内行”的意思,是著名Apache公司下基于Java开发的开源项目。 2.Maven项目对象模型(POM)是一..

bakelFF的博客 12万+

iOS 生成 UUID(GUID)

iOS 生成 UUID(或者叫GUID)例子代码 NSString * gen_uuid() { CFUUIDRef uuid_ref = CFUUIDCreate(NULL); CFStringRef uuid_string_ref= CFUUIDCreateString(NULL, uuid_ref); CFRelease(uuid_ref); NSSt

taylor的专栏 1万+

安装VMware,出现没有虚拟网络适配器的问题

安装VMware,出现没有虚拟网络适配器的问题

Young_Harry的博客 1万+

iOS 获取设备的唯一标识

iOS设备唯一标识的方案

lyz0925的博客 4252

Linux ARM平台开发系列讲解(GMSL摄像头篇)1.2 MAX9296 GMSL链路配置

串行器 +解串器组成,软件需要做的就是写这三部分的驱动,让摄像头数据能到达。3. 配置解串器和串行器的GMSL链路。串行器和解串器上电成功之后,就可以配置。软件配置(注意软件只可以配置速率,2. 9296上电,使能芯片。的版本和速率,比如版本是配置。配置成功之后,就会出现串行器。的链路,其它同类型的。设备地址,我设置的是。...

DSMGUOGUO的博客 1万+

深水区探秘:小红书App x-s参数逆向与高并发爬虫实战(2026版)

在移动互联网的碎片化时代,小红书凭借其“社区+电商”的独特模式,积累了超过3亿月活用户。其内容生态覆盖了从美妆、穿搭到旅行、数码等几乎所有垂直领域。对于数据分析师、市场研究员以及AI算法工程师而言,小红书平台蕴含的价值是巨大的——无论是热门趋势洞察、KOL画像分析,还是多模态图文数据的采集。然而,想要高效、稳定地获取小红书App的公开数据,却并非易事。与Web端相比,小红书App的防护体系堪称“铜墙铁壁”。其核心的反爬机制建立在动态混淆的加密参数之上,尤其是请求头中的X-SX-T以及X-S-Common。

2201_76125261的博客 265

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

这里记录两个iOS开发中经常用到的知识点,一个是唯一标识,一个是全局变量。 (1)唯一标识 唯一标识一台设备(比如iPhone、iPad等)是一个基本的实现与业务上的需求,因为这个唯一标识在许多场景都需要使用到,比如用来统计(日活、总用户数等),再比如用作默认的账号,等等。 udid,曾经是唯一标识的首选,比如这样取得: NSString *UDID = [[UIDevice currentDe...

xjGitChat的博客 444

【RT-DETR有效改进】为什么YOLO版本的RT-DETR训练模型不收敛精度差的问题

本文的内容同样为本专栏的前期预热文章,文章主要解释一下为什么有的人跑ultralytics仓库的RT-DETR精度很差,模型不收敛,mAP异常的情况。为了验证这一情况我也是跑了多个实验,从多个数据集出发,100-500的数据集我跑了大概5个数据集,1000的我跑了二个,2000的我跑了一个,4000的跑了一个,同时其中一些版本我也用了不同的batch_size来出发验证精度异常的情况。

Snu77的博客 9763

YonBuilder移动开发——获取设备的唯一标识

在实际项目开发中,有些场景需要获取用户设备的唯一标识去推动实现相关的业务逻辑需求。随着移动端(`Android`和、`iOS`)加强了对用户隐私信息的保护,在高版本的操作系统中,相关的获取规则已经方法了变化。本文主要讲解一下,在`YonBuilder移动开发`技术体系中,如何去获取设备唯一标识信息。

开发的那些事儿 1846

C# MES通信从入门到精通(10)——C#使用HTTP的Post和Get方法和Mes系统通信

本文详细介绍了如何利用C#完成与HTTP协议的MES系统进行通信,通过POST和GET方法实现与MES系统的交互,由高级工程师的实战经验总结,实属C#与MES通信领域的葵花宝典!

qq_34059233的博客 3413

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Flutter 获取设备唯一标识

iOS: • 我们使用 device_info_plus 插件来获取设备的 identifierForVendor,它是 iOS 提供的唯一标识符,用于标识设备的应用程序。 Android: • 由于 Android 在 10 版本之后移除了对 Build.SERIAL 的访问权限,我们只能通过 Settings.Secure.ANDROID_ID 获取 Android ID,然后将其与设备的序列号(如果可用)拼接起来生成一个唯一标识。

qq_52871405的博客 4010

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

iOS获取设备的唯一标识的方法

各种获取设备唯一标识的方法介绍 一.UDID(Unique Device Identifier) UDID的全称是Unique Device Identifier,它就是苹果iOS设备的唯一识别码,它由40位16进制数的字母和数字组成(越狱的设备通过某些工具可以...

wwj256的专栏 2525

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

如何获取ios设备的唯一标识

很多地方都会需要用到唯一标志。 比如: 1. 我们相用一个设备的唯一标志当作用户id,特别是网络游戏,这样就可以省去注册的麻烦。 2. 想把app相关的文件加密,密钥哪里来的?有些人可能会说hard code,但是hard code的key比较容易被破解。而去hard code密钥加密的文件可以copy到其他设备。比如游戏的本地文件保存了一些游戏相关的数据,那么只要有一台机器购买100个金币

zj510的专栏 8941

iOS设备唯一标识获取策略(不定时更新)

在iOS系统中,获取设备唯一标识的方法有很多:一.UDID(Unique Device Identifier) UDID的全称是Unique Device Identifier,它就是苹果IOS设备的唯一识别码,它由40个字符的字母和数字组成(越狱的设备通过某些工具可以改变设备的UDID)。移动网络可利用UDID来识别移动设备,但是,从IOS5.0(2011年8月份)开始,苹果宣布将不再支持用u...

u012717715的博客 6517

iOS开发中如何获取设备唯一标识

iOS系统中,获取设备唯一标识的方法有很多: 1.UDID(Unique Device Identifier)  UDID的全称是Unique Device Identifier,顾名思义,它就是苹果iOS设备的唯一识别码,它由40个字符的字母和数字组成。 2.UUID(Universally Unique Identifier)  UUID是Universally Uni

Han_jihong的博客 968

设备唯一标识

一、IMEI International Mobile Equipment Identity,国际移动设备身份码,在手机组装完成后赋予的一个全球唯一的号码,由于此时IPhone只支持单卡,所以IMEI和IPhone是一一对应的 iOS 2提供了一种方法获取IMEI,但是为了保护用户隐私,iOS 5以后苹果不再允许获取IMEI了,如果你在应用中获取IMEI,可能会遭到Apple Store的拒绝 二、IDFA Identifier for Identifier,即广告标识符,多用于用户的广告追踪,是每台设备的

serendipity 6969

iOS开发中怎么获取设备的唯一标识

在 iOS 7 中获取唯一标识符(UDID/UUID)Get unique identifer in iOS 7在 iOS 5 中, 可以获取到系统的 UDID(Unique Device Identifier) ,后来被 Apple 禁止掉了。于是,在 iOS 6 中,大家开始使用 MAC 地址 MAC(Medium/Media Access Control) ,后来又被 Apple 禁止掉了。同

喵咪不爱吃鱼的博客 737

iOS设备唯一标识获取策略

英文原文:In iOS 7 and later, if you ask for the MAC address of an iOS device, the system returns the value 02:00:00:00:00:00. If you need to identify the device, use the identifierForVendor property of UI

仰望星空 1449

ios设备唯一标识获取策略

英文原文:In iOS 7 and later, if you ask for the MAC address of an iOS device, the system returns the value 02:00:00:00:00:00. If you need to identify the device, use the identifierForVendor property of

rlpeng的专栏 757

设备的唯一标识

英文原文:In iOS 7 and later, if you ask for the MAC address of an iOS device, the system returns the value 02:00:00:00:00:00. If you need to identify the device, use the identifierForVendor property o

DDF的专栏 3660
上一篇: iOS开发简记(4):录音AVAudioRecorder
下一篇: iOS开发简记(6):storyboard的使用
显亮
博客等级 码龄19年 47粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

显亮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值