FCUUID 1.3.1

FCUUID 1.3.1

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布最后发布2016年10月

Fabio Caccamo维护。



FCUUID 1.3.1

  • Fabio Caccamo

iOS UUID库作为旧的好UDIDidentifierForVendor的替代品。
此库提供了获取不同持久化级别的最简单API,以获取通用唯一标识符

可以检索为同一用户的所有设备创建的UUIDs,以此方式,通过服务器端的一点点帮助,可以轻松管理多台设备间的访客账户

要求与依赖

  • iOS >= 5.0
  • ARC开启
  • 启用键值存储 (目标 / 能力 / iCloud / 键值存储)
  • Security框架
  • UICKeyChainStore
  • (可选) - 启用键值存储 -> 目标 / 能力 / iCloud / 键值存储 开启,如果您要共享 uuidsOfUserDevices的值,并在使用相同iCloud账户的多台设备间使用。
  • (可选) - 启用KeyChain共享(权限和配置文件),如果您需要在相同bundle seed的多款应用间共享相同的uuidForDevice / uuidsOfUserDevices的值。

安装

手动安装

可选设置

建议在applicationDidFinishLaunchingWithOptions方法中执行设置。

  • 添加对FCUUIDsOfUserDevicesDidChangeNotification的观察者,以通知用户设备UUIDs的变化。
  • 如果需要,可以使用API中列出的迁移方法将之前使用的UUID或UDID迁移到使用中(建议在调用uuidForDeviceuuidsForUserDevices方法之前进行迁移)。请注意,迁移只能在现有值有效且uuidForDevice尚未创建时工作。
  • 调用任何类方法以强制执行iCloud同步。

API

获取不同的UUID(每个都具有自己的持久性级别)

//changes each time (no persistent)
+(NSString *)uuid;

//changes each time (no persistent), but allows to keep in memory more temporary uuids
+(NSString *)uuidForKey:(id<NSCopying>)key;

//changes each time the app gets launched (persistent to session)
+(NSString *)uuidForSession;

//changes each time the app gets installed (persistent to installation)
+(NSString *)uuidForInstallation;

//changes each time all the apps of the same vendor are uninstalled (this works exactly as identifierForVendor)
+(NSString *)uuidForVendor;

//changes only on system reset, this is the best replacement to the good old udid (persistent to device)
+(NSString *)uuidForDevice;
//or
#import "UIDevice+FCUUID.h"
[[UIDevice currentDevice] uuid];

获取用户设备的UUID列表

//returns the list of all uuidForDevice of the same user, in this way it's possible manage guest accounts across multiple devices easily
+(NSArray *)uuidsOfUserDevices;

从之前存储的UUID/UDID迁移
在迁移现有值之前,建议通过简单地传递commitMigration:NO并记录返回的值来调试它。
当您准备好提交迁移时,使用 commitMigration:YES
迁移完成后,任何对 uuidForDevice 的未来调用都将返回迁移后的值。

//these methods search for an existing UUID / UDID stored in the KeyChain or in UserDefaults for the given key / service / access-group
+(NSString *)uuidForDeviceMigratingValue:(NSString *)value commitMigration:(BOOL)commitMigration;
+(NSString *)uuidForDeviceMigratingValueForKey:(NSString *)key commitMigration:(BOOL)commitMigration;
+(NSString *)uuidForDeviceMigratingValueForKey:(NSString *)key service:(NSString *)service commitMigration:(BOOL)commitMigration;
+(NSString *)uuidForDeviceMigratingValueForKey:(NSString *)key service:(NSString *)service accessGroup:(NSString *)accessGroup commitMigration:(BOOL)commitMigration;

检查值是否为有效的UUID

+(BOOL)uuidValueIsValid:(NSString *)uuidValue;

持久化

  • 是的
  • -
  • * 请参阅以下说明
PERSISTS 应用内存 应用重启 重置广告标识符 应用重新安装 系统重启 系统升级 系统重置
uuid - - - - - - -
uuidForKey:key - - - - - -
uuidForSession - - - - - -
uuidForInstallation - - -
uuidForVendor - * - -
uuidForDevice **

*(如果用户未卸载同一制造商的所有应用,则保留)

**(如果用户恢复包含密钥链数据的设备备份,则保留)

常见问题解答(FAQ)

我如何将设备UUID在两个应用之间共享?

您必须启用 密钥链共享(权限和配置文件),并且您的应用的标识符必须具有相同的bundle seed。

如果我使用相同的iCloud账户和iCloud Keychain在两个不同设备上调用uuidForDevice会发生什么事?

您将获得2个 不同的UUID,如果您调用uuidsOfUserDevices,您将获得包含两个设备UUID的列表。

当我重启/升级/重置我的设备系统时,设备UUID会改变吗?

请参阅上面的 持久化 表。

支持开发

Donate

Donate

许可

MIT License 下发布。