开始使用
-
安装包
Terminal window npm i @capgo/capacitor-app-tracking-transparencyTerminal window pnpm add @capgo/capacitor-app-tracking-transparencyTerminal window yarn add @capgo/capacitor-app-tracking-transparencyTerminal window bun add @capgo/capacitor-app-tracking-transparency -
同步原生项目
Terminal window npx cap syncTerminal window pnpm cap syncTerminal window yarn cap syncTerminal window bunx cap sync
iOS 设置
Section titled “iOS 设置”将 NSUserTrackingUsageDescription 键添加到 Info.plist:
<key>NSUserTrackingUsageDescription</key><string>This identifier will be used to deliver personalized ads to you.</string>该字符串应说明您为何需要跟踪权限。请求权限时这段文字会显示给用户。
导入插件并使用其方法处理跟踪授权:
import { AppTrackingTransparency } from '@capgo/capacitor-app-tracking-transparency';
// 检查当前跟踪状态const checkStatus = async () => { const { status } = await AppTrackingTransparency.getStatus(); console.log('Tracking status:', status);};
// 请求跟踪权限const requestPermission = async () => { const { status } = await AppTrackingTransparency.requestPermission(); console.log('User chose:', status);};API 参考
Section titled “API 参考”getStatus()
Section titled “getStatus()”获取当前跟踪授权状态,不会提示用户。
const { status } = await AppTrackingTransparency.getStatus();// Returns: 'authorized' | 'denied' | 'notDetermined' | 'restricted'requestPermission()
Section titled “requestPermission()”请求用户授权访问用于跟踪的应用相关数据。会显示 iOS 原生权限对话框。
const { status } = await AppTrackingTransparency.requestPermission();// Returns: 'authorized' | 'denied' | 'notDetermined' | 'restricted'import { AppTrackingTransparency } from '@capgo/capacitor-app-tracking-transparency';
export class TrackingService { async requestTrackingIfNeeded(): Promise<boolean> { // 先检查当前状态 const { status } = await AppTrackingTransparency.getStatus();
if (status === 'notDetermined') { // 用户尚未被询问,显示对话框 const result = await AppTrackingTransparency.requestPermission(); return result.status === 'authorized'; }
return status === 'authorized'; }
async isTrackingAuthorized(): Promise<boolean> { const { status } = await AppTrackingTransparency.getStatus(); return status === 'authorized'; }}| Status | 描述 |
|---|---|
authorized | 用户已允许跟踪 |
denied | 用户拒绝跟踪 |
notDetermined | 用户尚未被询问 |
restricted | 跟踪被限制(例如家长控制) |
- 需要 iOS 14.0+
- 使用 Apple 的
ATTrackingManager框架 - 权限弹窗在每次安装中只显示一次
Android
Section titled “Android”- 自动返回
authorized - 不会显示权限弹窗(ATT 仅适用于 iOS)
- 为开发目的返回
authorized
-
在合适的时机请求 不要在应用启动时请求权限。等用户进入能从跟踪中获益的功能后再请求,并先说明价值。
-
请求前先检查 在调用
requestPermission()前始终使用getStatus()检查,避免不必要的调用。 -
处理所有状态
const { status } = await AppTrackingTransparency.getStatus();switch (status) {case 'authorized':// 启用个性化功能break;case 'denied':case 'restricted':// 使用非个性化替代方案break;case 'notDetermined':// 考虑请求权限break;}