uniapp中App包含NSUserTrackingUsageDescription时如何请求用户追踪权限
在uniapp开发的iOS应用中,已经按照要求添加了NSUserTrackingUsageDescription描述字段,但不知道如何具体触发用户追踪权限的弹窗请求。请问应该调用哪个API或方法?是否需要引入额外的插件?
2 回复
在uniapp中,需先在manifest.json的App模块权限配置中勾选NSUserTrackingUsageDescription并填写描述。然后在需要时调用plus.ios.requestTrackingAuthorization()来请求用户追踪权限。
在 UniApp 中,当 App 包含 NSUserTrackingUsageDescription(用于 iOS 14+ 的用户追踪权限请求)时,需要通过原生插件或条件编译调用 iOS 原生 API 来请求权限。以下是步骤和示例代码:
步骤:
-
在 manifest.json 中配置隐私描述: 在
App模块配置→iOS设置下,添加NSUserTrackingUsageDescription字段,填写描述文本(例如:“请求允许追踪以提供个性化广告”)。 -
通过 UniApp 插件或条件编译调用原生代码:
- 使用条件编译(如
#ifdef APP-PLUS)区分平台。 - 通过
plus.ios接口调用 iOS 的ATTrackingManagerAPI。
- 使用条件编译(如
示例代码(在 Vue 页面或 JS 文件中):
// 检查是否为 iOS 平台
#ifdef APP-PLUS
if (plus.os.name === 'iOS') {
// 导入 iOS 原生框架
const ATTrackingManager = plus.ios.import('AppTrackingTransparency').ATTrackingManager;
// 检查当前权限状态
const status = ATTrackingManager.trackingAuthorizationStatus;
// 如果未决定,请求权限
if (status === 0) { // 0 表示 ATTrackingManagerAuthorizationStatusNotDetermined
ATTrackingManager.requestTrackingAuthorizationWithCompletionHandler(function(result) {
// 回调处理结果
console.log('追踪权限状态:', result);
plus.ios.deleteObject(ATTrackingManager); // 释放对象
});
} else {
console.log('当前权限状态:', status);
}
}
#endif
注意事项:
- iOS 版本要求:仅 iOS 14 及以上版本支持此权限弹窗。
- 描述文本:必须清晰说明追踪用途,否则可能被 App Store 审核拒绝。
- 权限状态:结果代码为整数(0-未决定,1-受限,2-拒绝,3-授权)。
通过以上方法,即可在 UniApp 中请求用户追踪权限。

