设备唯一识别码

在完成黔西南移动客户端项目后,作者决定利用空档期专注于Swift技术的学习与应用。文章详细介绍了在iOS设备识别中使用OpenUDID而非IDFA的原因,并提供了相应的代码实现,以确保数据安全与合规性。

从今年年初到现在, 一直在接活, 没有停过, 先是《时装》ipad版,然后是CCTV5, 然后是会点会汇通, 然后是黔西南移动客户端。 

今天终于完成了黔西南这个项目中的上传图片和视频的问题。 9月份苹果的SWIFT就正式与开发者见面了, 在这段时间内需要腾出时间去全力搞SWIFT了。 

在 SWIFT出来之前需要花些时间把这段时间的问题记录下来。

现在说一下这个设备唯一识别码的问题。

最好不要使用IDFA, 即苹果自已提供的这个, 使用这个的话,你的代码中需要使用iad之类。 否则可能被拒。

最好使用OpenUDID

在ios7.0以下, 使用设备的mac地址和程序的bundle id再进行一下md5, 是个很好的方法。

在ios7.0及以上, 使用OpenUDID值生成一个值, (注:该值每次生成会是不一样的。)


上面这两种情况都不宜每次都执行, 较好的办法是每次生成后,就进行存储。 下次直接取该值即可。

代码如下:

- (NSString *) uniqueDeviceIdentifier{

    if ([[UIDevice currentDevice].systemVersion floatValue] < 7.0) {

        NSString *bundleIdentifier = [[NSBundle mainBundle] bundleIdentifier];

        NSString *macaddress = [[UIDevice currentDevice] macaddress];

        

        NSString *stringToHash = [NSString stringWithFormat:@"%@%@",macaddress,bundleIdentifier];

        NSString *uniqueIdentifier = [stringToHash stringFromMD5];

        

        return uniqueIdentifier;

    }

    else {

        return [OpenUDID value];

    }

}


### 如何在 Cocos Creator 中获取设备唯一识别码 为了实现这一功能,可以利用 JavaScript 调用 Android 平台特定的功能来获得 `deviceId`。通过修改或扩展 `Cocos2dxActivity.java` 文件中的逻辑,在 Java 层面调取安卓系统的 API 来读取设备 ID,并将其返回给 Cocos Creator 的 JS 部分。 #### 修改 Native 代码 (Java) 可以在 `org.cocos2dx.lib.Cocos2dxActivity` 类里加入新的方法用于获取 DeviceId: ```java public class Cocos2dxActivity extends Activity { ... public static String getDeviceId() { TelephonyManager tm = (TelephonyManager)getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE); return tm.getDeviceId(); } } ``` 此部分实现了从 Android 设备中提取唯一设备标识符[^1]。 #### 创建 JNI 接口 为了让 JavaScript 可以访问到这个新添加的方法,还需要创建一个本地接口让两者之间能够通信。这通常涉及到编写一些额外的桥梁代码以便于跨平台操作。 #### 编写 JavaScript 方法 最后一步是在 Cocos Creator 工程里的脚本文件中定义相应的函数用来请求并接收来自 native 端的数据: ```javascript cc.sys.isMobile && cc.sys.os === cc.sys.OS_ANDROID ? jsb.reflection.callStaticMethod( "org/cocos2dx/javascript/AppActivity", "getDeviceId", "()Ljava/lang/String;" ) : null; ``` 这段代码会判断当前运行环境是否为 Android 移动端,如果是,则尝试调用之前定义好的静态方法 `getDeviceId()` 来取得设备编号。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值