在Expo 45上实现应用跟踪透明度许可请求



我有一个managed-expo (sdk 45)应用程序,由于某种原因,苹果拒绝了我的应用程序,因为他们无法找到应用程序跟踪透明度权限请求。我知道这和expo-ads-admob有关。我收到这样的信息:

请解释在您的应用程序中我们可以找到应用程序跟踪透明度权限请求。请求应该出现在任何数据收集之前,可以用来跟踪用户。如果你已经实现了应用跟踪透明度,但权限请求没有出现在运行最新操作系统的设备上,请查看可用的文档并确认应用跟踪透明度已正确实现。如果你的应用不跟踪用户,在app Store Connect中更新你的应用隐私信息来取消跟踪。您必须具有Account Holder或Admin角色才能更新应用程序隐私信息。

我使用的是expo-ads-admob,我是这样做的(docs):

我安装了expo-tracking-transparency并在应用程序的第一部分(App.tsx)中添加了该功能

import * as React from "react";
import { requestTrackingPermissionsAsync } from "expo-tracking-transparency";
export default function App() {
React.useEffect(() => {
(async () => {
const { status } = await requestTrackingPermissionsAsync();
if (status === "granted") {
console.log("Yay! I have user permission to track data");
}
})();
}, []);
return (
<MainApplication />
);
}

我还添加了

"plugins": [
[
"expo-tracking-transparency",
{
"userTrackingPermission": "This identifier will be used to deliver personalized ads to you."
}
]
]

对app.json

然后我使用组件(在应用程序的任何地方)像这样:

<AdMobBanner
bannerSize={
Platform.OS === "ios" ? "fullBanner" : "smartBannerLandscape"
}
adUnitID={
Platform.OS == "ios"
? "IOS_ADMOB_CODE"
: "ANDROID_ADMOB_CODE"
}
servePersonalizedAds={false}
onDidFailToReceiveAdWithError={() => {}}
onAdViewDidReceiveAd={() => {}}
/>

它工作,但iOS一直拒绝我的应用程序,声称他们找不到权限。我到处看,看到这是正确的方式来实现这一点,但不幸的是,它没有工作。

提前感谢!

如果您没有infoplist,请在此处添加Description。输入图片描述

最新更新