在本地世博会上实现苹果应用程序透明跟踪(ATT)功能的最佳方式是什么?我的应用程序一直被苹果拒绝,即使我添加了:
app.json文件:
"infoPlist": {
"NSUserTrackingUsageDescription": "App requires permission...."
}
发布于 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
在那里您可以请求应用程序跟踪,如
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/)
expo install expo-tracking-transparency
您可以将它作为插件添加到您的app.json
中。
{
"expo": {
"plugins": [
[
"expo-tracking-transparency",
{
"userTrackingPermission": "This identifier will be used to deliver personalized ads to you."
}
]
]
}
}
现在你可以这样使用:
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>
);
}
发布于 2021-05-07 14:27:43
您需要首先请求跟踪权限(我使用了react本机权限):
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')
}
})()
}, [])
请记住将此文件添加到根项目中:
// <project-root>/firebase.json
{
"react-native": {
"analytics_auto_collection_enabled": false
}
}
发布于 2021-05-05 07:56:03
我最后使用的解决方案是使用Facebook.getPermissionsAsync()
https://stackoverflow.com/questions/67386576
复制相似问题