【发布时间】:2022-07-15 18:17:13
【问题描述】:
我有一个 managed-expo (sdk 45) 申请,由于某种原因,苹果拒绝了我的申请,因为他们无法找到 App Tracking Transparency 权限请求。我知道这与 expo-ads-admob 有关。我收到这条消息:
请说明我们可以在您的应用中找到应用跟踪透明度权限请求的位置。该请求应在收集任何可用于跟踪用户的数据之前出现。 如果您已实施 App Tracking Transparency 但权限请求未出现在运行最新操作系统的设备上,请查看可用文档并确认已正确实施 App Tracking Transparency。如果您的应用不跟踪用户,请更新您的应用隐私信息在 App Store Connect 中取消声明跟踪。您必须具有帐户持有者或管理员角色才能更新应用隐私信息。
我正在使用 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 一直拒绝我的应用程序,声称他们找不到权限。我到处查看,发现这是实现此功能的正确方法,但不幸的是它不起作用。
提前致谢!
【问题讨论】:
-
您不必将该请求也添加到 iOS 的 info.plist 文件中吗?您必须添加一个特定的键,该值通常是最终用户将在提示中看到的描述。例如,在请求相机权限时请参阅此链接:stackoverflow.com/questions/39631256/…
-
我发现了一个和你类似的问题,请看这里:stackoverflow.com/questions/63587364/…
-
我忘了提人。我正在使用托管博览会(这是别的东西)。刚刚编辑了这个问题。在托管工作流中,我们没有这些文件(应该按照文档中的说明自动添加)
标签: react-native expo app-store-connect expo-ads-admob