uni-app IOS 原生获取IDFV IDFA
uni-app IOS 原生获取IDFV IDFA
群里面一个朋友让我帮忙翻译的
Object-c代码如下:
NSString *idfv = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
NSString *adId = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
注:下面的IDFA等同于adid
console.log('UUID:'+plus.device.uuid)
console.log('important')
var NSUUID = plus.ios.importClass('NSUUID');
var UIDevice = plus.ios.importClass("UIDevice");
var currentDevice = UIDevice.currentDevice()
var identifierForVendor = currentDevice.identifierForVendor().UUIDString();
console.log('IDFV:'+identifierForVendor)
var ASIdentifierManager = plus.ios.importClass('ASIdentifierManager');
var sharedManager = ASIdentifierManager.sharedManager();
var IDFA = sharedManager.advertisingIdentifier().UUIDString();
console.log('IDFA:'+IDFA);
经过网友测试有效可用,代码没有优化,偷懒直接importClass,有意思的伙伴自己用invoke处理即可。
转载本文记得备注出处,谢谢。
更多关于uni-app IOS 原生获取IDFV IDFA的实战教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于uni-app IOS 原生获取IDFV IDFA的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在 uni-app
中获取 iOS 设备的 IDFV(Identifier For Vendor)和 IDFA(Identifier For Advertising),通常需要借助原生代码扩展。这是因为 uni-app
本身是一个跨平台的框架,直接提供对原生 API 的访问能力有限。因此,我们需要通过编写自定义的原生插件来实现这一功能。
以下是一个基本的示例,展示了如何在 iOS 平台上通过原生代码获取 IDFV 和 IDFA,并在 uni-app
中调用这些原生方法。
iOS 原生代码部分
-
创建自定义插件:在
uni-app
项目的native-plugins
目录下创建一个新的插件目录(例如MyIDPlugin
)。 -
在插件目录中创建
MyIDPlugin.h
和MyIDPlugin.m
文件。
MyIDPlugin.h
#import <Foundation/Foundation.h>
#import <UniAppPlugin.h>
@interface MyIDPlugin : NSObject<UniModule>
- (void)getIDFV:(UniJSCallback *)callback;
- (void)getIDFA:(UniJSCallback *)callback;
@end
MyIDPlugin.m
#import "MyIDPlugin.h"
#import <AdSupport/AdSupport.h>
@implementation MyIDPlugin
- (void)getIDFV:(UniJSCallback *)callback {
NSString *idfv = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
callback(@[idfv]);
}
- (void)getIDFA:(UniJSCallback *)callback {
if ([ASIdentifierManager isAdvertisingTrackingEnabled]) {
NSString *idfa = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
callback(@[idfa]);
} else {
callback(@[@"Tracking is disabled"]);
}
}
@end
- 注册插件:在
uni-app
项目的manifest.json
中注册该插件。
uni-app 调用原生插件
在 uni-app
的 JavaScript 代码中,你可以通过 uni.requireNativePlugin
方法调用原生插件。
const myIDPlugin = uni.requireNativePlugin('MyIDPlugin');
// 获取 IDFV
myIDPlugin.getIDFV((res) => {
console.log('IDFV:', res[0]);
});
// 获取 IDFA
myIDPlugin.getIDFA((res) => {
console.log('IDFA:', res[0]);
});
注意事项
- 获取 IDFA 需要用户同意广告追踪,因此在实际应用中,应确保用户已授权广告追踪。
- 提交应用至 App Store 时,确保你的应用使用 IDFA 的目的是符合 Apple 的隐私政策的,否则可能会被拒绝。
- 上述代码仅作示例,实际开发中应根据具体需求进行错误处理和边界情况的处理。