首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为iOS 14.5实现苹果应用程序跟踪透明性(ATT)

为iOS 14.5实现苹果应用程序跟踪透明性(ATT)
EN

Stack Overflow用户
提问于 2021-05-04 14:16:54
回答 4查看 4.5K关注 0票数 4

在本地世博会上实现苹果应用程序透明跟踪(ATT)功能的最佳方式是什么?我的应用程序一直被苹果拒绝,即使我添加了:

app.json文件:

代码语言:javascript
运行
复制
"infoPlist": {
  "NSUserTrackingUsageDescription": "App requires permission...."
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2021-05-05 04:20:40

在iOS 14上,苹果引入了应用程序跟踪透明权限来访问IDFA。您需要提示用户是否允许您的应用程序使用跟踪它们的库,在infoPlist上添加它只允许您在应用程序中使用这个API。

博览还没有这个特性,但有些库可以用来提示权限

示例:https://docs.expo.io/versions/v41.0.0/sdk/facebook/#facebookgetpermissionsasync

您可以使用其他库,如https://github.com/mrousavy/react-native-tracking-transparency

在那里您可以请求应用程序跟踪,如

代码语言:javascript
运行
复制
    import { getTrackingStatus } from 'react-native-tracking-transparency';

    const trackingStatus = await getTrackingStatus();
    if (trackingStatus === 'authorized' || trackingStatus === 'unavailable') {
      // enable tracking features
    }


    import { requestTrackingPermission } from 'react-native-tracking-transparency';
    
    const trackingStatus = await requestTrackingPermission();
    if (trackingStatus === 'authorized' || trackingStatus === 'unavailable') {
      // enable tracking features
    }

这可能需要在不久的将来进行更新,因为世博发布了一个新的SDK版本,并提供了相应的解决方案。

编辑

来自世博44+

世博会现在有了一个TrackTransparency的图书馆:(https://docs.expo.dev/versions/latest/sdk/tracking-transparency/)

代码语言:javascript
运行
复制
expo install expo-tracking-transparency

用于裸应用程序:https://github.com/expo/expo/tree/main/packages/expo-tracking-transparency#installation-in-bare-react-native-projects

您可以将它作为插件添加到您的app.json中。

代码语言:javascript
运行
复制
{
  "expo": {
    "plugins": [
      [
        "expo-tracking-transparency",
        {
          "userTrackingPermission": "This identifier will be used to deliver personalized ads to you."
        }
      ]
    ]
  }
}

现在你可以这样使用:

代码语言:javascript
运行
复制
import React, { useEffect } from 'react';
import { Text, StyleSheet, View } from 'react-native';
import { requestTrackingPermissionsAsync } from 'expo-tracking-transparency';

export default function App() {
  useEffect(() => {
    (async () => {
      const { status } = await requestTrackingPermissionsAsync();
      if (status === 'granted') {
        console.log('Yay! I have user permission to track data');
      }
    })();
  }, []);

  return (
    <View style={styles.container}>
      <Text>Tracking Transparency Module Example</Text>
    </View>
  );
}
票数 7
EN

Stack Overflow用户

发布于 2021-05-07 14:27:43

您需要首先请求跟踪权限(我使用了react本机权限):

代码语言:javascript
运行
复制
import { request, RESULTS, PERMISSIONS } from 'react-native-permissions'

export const requestPermissionTransparency = async () => {
  return await request(PERMISSIONS.IOS.APP_TRACKING_TRANSPARENCY)
}

useEffect(() => {
    ;(async () => {
      const result = await requestPermissionTransparency()
      if (result === RESULTS.GRANTED) {
        //You need to enable analytics (fb,google,etc...)
        await firebase.analytics().setAnalyticsCollectionEnabled(true)
        console.log('Firebase Analytics: ENABLED')
      }
    })()
  }, [])

请记住将此文件添加到根项目中:

代码语言:javascript
运行
复制
// <project-root>/firebase.json
{
  "react-native": {
    "analytics_auto_collection_enabled": false
  }
}

参考资料:https://rnfirebase.io/analytics/usage

票数 2
EN

Stack Overflow用户

发布于 2021-05-05 07:56:03

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67386576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档