我正在寻找一种解决方案,用于检测启动前报告中是否存在我的应用程序。长话短说-我有一个游戏已经在Google Play上直播,里面装有统一广告,我想发布一个更新。如果我将新版本放到Google Play上,则会使用发布前的报告进行检查,并会产生虚假的广告展示次数。我无法通过统一的“操作仪表板”禁用广告,因为它将影响实时版本的用户。我也不想禁用发布前的转发,它们非常有帮助。
因此,我正在寻找一种解决方案,无论是代码台钳还是通用流台钳。
经过几天的互联网搜索,我找到了两种可能的解决方案,但是它们都不起作用。
解决方案1: 使用此文档-Firebase和StackOwerflow answer,而这个示例Unity forum我想出了以下代码:
public bool IsTestLab()
{
using (var actClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
{
var context = actClass.GetStatic<AndroidJavaObject>("currentActivity");
var systemGlobal = new AndroidJavaClass("android.provider.Settings$Global");
var testLab = systemGlobal.CallStatic<string>("getString", context.Call<AndroidJavaObject>("getContentResolver"), "firebase.test.lab");
return testLab == "true"
}
}
解决方案2:基于Another Firebase doc,我也尝试过这样做:
public bool IsTestLab()
{
return TestLabManager.Instantiate().IsTestingScenario;
}
有人可以分享他们如何解决此问题吗?
谢谢!
答案 0 :(得分:0)
适用于仍在寻找解决方案的人。
错误是我正在阅读android.provider.Settings$Global
,但是此设置存储在android.provider.Settings$System
因此,这是正确且有效的代码:
public bool IsTestLab()
{
using (var actClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
{
var context = actClass.GetStatic<AndroidJavaObject>("currentActivity");
var systemGlobal = new AndroidJavaClass("android.provider.Settings$System");
var testLab = systemGlobal.CallStatic<string>("getString", context.Call<AndroidJavaObject>("getContentResolver"), "firebase.test.lab");
return testLab == "true"
}
}
答案 1 :(得分:0)
我在Google内部做了一些关于特定广告问题的挖掘。抱歉,花了这么长时间。
Firebase测试实验室在this web page上记录其移动地址范围。如果您使用Google移动广告就可以了,那么Google已经忽略了来自这些地址范围的广告展示。如果您使用其他广告SDK,则可能需要与他们联系,并要求他们忽略这些范围内的展示。然后,您完全不需要修改应用程序。