Uno-Platform实现应用跟踪提示
Uno-Platform implement app tracking prompt
我正在更新我的应用程序,并且随着 Apple 更改隐私要求(我喜欢这样),我认为我需要在我的应用程序中添加应用程序跟踪权限。这是因为我使用了一个转到第三方网站的 webview,该网站获取设备 IP 地址并在视图中放置一个 cookie。我正在为如何在 Uno 中执行此操作而苦苦挣扎。我知道它在底层使用 Xamarin 平台,但我并不真正了解如何执行此操作。应用程序中没有任何广告。我只能找到几个例子 - 所以我在下面的内容是基于它们的。
我发现我需要将 NSUserTrackingUsageDescription 添加到我的 info.plist。我看到我需要使用 AttTrackingManager。那么 - 首先 - 如何将 AttTrackingManager 导入我在 Visual Studio 中的项目?我查了Nuget,没看到。据我所知——我需要检查我的 OnLoaded 中的值,并根据该值我需要将设备 ID 归零或什么也不做。另外-我是否需要在我的应用程序访问 webview 时检查此值-用户转到应用程序中的不同页面并返回 webview(我想我需要检查它)?
我上面的说法正确吗?是使用类似这样的代码实现部分的最佳方式:
#if __IOS__
using AttTrackingManager?
#endif
private void OnLoaded(object sender, RoutedEventArgs e)
{
#if __IOS__
try
{
ATTrackingManager.RequestTrackingAuthorization((status) => {
if (status == ATTrackingManagerAuthorizationStatus.Authorized)
{
//Proceed as I currently due
}
else if (status == ATTrackingManagerAuthorizationStatus.Denied)
{
//Not sure what to do here
}
});
}
catch (Exception e)
{
}
#endif
}
您的方法似乎很合理。让我澄清你的一些问题。
1- 您正在寻找一个 nuget,但您不需要。 ATTrackingManager 是 iOS SDK 的一部分(在 AppTrackingTransparency
命名空间中),只要您将 iOS14.5 作为编译目标,您就可以访问它。 Xamarin.iOS位是VisualStudio内置的,所以只要确保你的版本足够高即可。
2- 如您所述,您需要在 info.plist 中添加一个 NSUserTrackingUsageDescription
。这将显示在弹出窗口中。
3- 在您的代码中,要使用本机弹出窗口提示用户,您需要这样的东西。
ATTrackingManager.RequestTrackingAuthorization(( status) => {
if(status == ATTrackingManagerAuthorizationStatus.Authorized)
{
// Do something if needed.
}
else if (status == ATTrackingManagerAuthorizationStatus.Denied)
{
// Do something if needed.
}
});
根据需要显示弹出窗口的原因,您可能甚至不需要对结果做任何事情。
此 AppTransparency 权限可让您检索 IDFA,该 IDFA 通常用于跨不同应用或服务跟踪用户。除非权限为 Authorized
,否则 IDFA 将始终以一系列零的形式返回。
我猜大多数人会请求此权限以遵守广告 sdk 或 facebook sdk 或社交登录 sdk。无论用户是否授权跟踪都应该对开发人员透明,SDK 将继续工作,但将获取带有零而不是真实 IDFA 的 IDFA。
何时请求权限由您决定。您可以尽早执行此操作,也可以稍等片刻,直到用户与应用程序互动并看到跟踪的价值。只知道虽然授权为 undefined
,但 IDFA 将为零,就像权限为 denied
.
一样
我正在更新我的应用程序,并且随着 Apple 更改隐私要求(我喜欢这样),我认为我需要在我的应用程序中添加应用程序跟踪权限。这是因为我使用了一个转到第三方网站的 webview,该网站获取设备 IP 地址并在视图中放置一个 cookie。我正在为如何在 Uno 中执行此操作而苦苦挣扎。我知道它在底层使用 Xamarin 平台,但我并不真正了解如何执行此操作。应用程序中没有任何广告。我只能找到几个例子 - 所以我在下面的内容是基于它们的。
我发现我需要将 NSUserTrackingUsageDescription 添加到我的 info.plist。我看到我需要使用 AttTrackingManager。那么 - 首先 - 如何将 AttTrackingManager 导入我在 Visual Studio 中的项目?我查了Nuget,没看到。据我所知——我需要检查我的 OnLoaded 中的值,并根据该值我需要将设备 ID 归零或什么也不做。另外-我是否需要在我的应用程序访问 webview 时检查此值-用户转到应用程序中的不同页面并返回 webview(我想我需要检查它)?
我上面的说法正确吗?是使用类似这样的代码实现部分的最佳方式:
#if __IOS__
using AttTrackingManager?
#endif
private void OnLoaded(object sender, RoutedEventArgs e)
{
#if __IOS__
try
{
ATTrackingManager.RequestTrackingAuthorization((status) => {
if (status == ATTrackingManagerAuthorizationStatus.Authorized)
{
//Proceed as I currently due
}
else if (status == ATTrackingManagerAuthorizationStatus.Denied)
{
//Not sure what to do here
}
});
}
catch (Exception e)
{
}
#endif
}
您的方法似乎很合理。让我澄清你的一些问题。
1- 您正在寻找一个 nuget,但您不需要。 ATTrackingManager 是 iOS SDK 的一部分(在 AppTrackingTransparency
命名空间中),只要您将 iOS14.5 作为编译目标,您就可以访问它。 Xamarin.iOS位是VisualStudio内置的,所以只要确保你的版本足够高即可。
2- 如您所述,您需要在 info.plist 中添加一个 NSUserTrackingUsageDescription
。这将显示在弹出窗口中。
3- 在您的代码中,要使用本机弹出窗口提示用户,您需要这样的东西。
ATTrackingManager.RequestTrackingAuthorization(( status) => {
if(status == ATTrackingManagerAuthorizationStatus.Authorized)
{
// Do something if needed.
}
else if (status == ATTrackingManagerAuthorizationStatus.Denied)
{
// Do something if needed.
}
});
根据需要显示弹出窗口的原因,您可能甚至不需要对结果做任何事情。
此 AppTransparency 权限可让您检索 IDFA,该 IDFA 通常用于跨不同应用或服务跟踪用户。除非权限为 Authorized
,否则 IDFA 将始终以一系列零的形式返回。
我猜大多数人会请求此权限以遵守广告 sdk 或 facebook sdk 或社交登录 sdk。无论用户是否授权跟踪都应该对开发人员透明,SDK 将继续工作,但将获取带有零而不是真实 IDFA 的 IDFA。
何时请求权限由您决定。您可以尽早执行此操作,也可以稍等片刻,直到用户与应用程序互动并看到跟踪的价值。只知道虽然授权为 undefined
,但 IDFA 将为零,就像权限为 denied
.