【问题标题】:Detect Google Play pre-launch report in Unity在 Unity 中检测 Google Play 预发布报告
【发布时间】:2019-09-01 18:07:57
【问题描述】:

我正在寻找有关如何检测我的应用在发布前报告中启动的解决方案。长话短说 - 我有一个游戏已经在谷歌播放,里面有统一广告,我想发布一个更新。如果我将我的新版本放到 google play 上,它将使用发布前报告进行检查,并会产生虚假广告印象。我无法通过统一的“操作仪表板”禁用广告,因为它会影响实时版本的用户。我也不想禁用发布前转发,它们非常有帮助。

所以,我正在寻找一种解决方案,无论是代码虎钳还是通用流量虎钳。

在网上搜索了几天后,我找到了两个潜在的解决方案,但都没有奏效。

解决方案 1: 使用此文档 - FirebaseStackOwerflow 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;
}

有人可以分享他们是如何解决这个问题的吗?

提前致谢!

【问题讨论】:

    标签: c# android firebase unity3d google-play


    【解决方案1】:

    对于仍在寻找解决方案的人。

    错误是我在阅读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"
        }
    }
    

    【讨论】:

      【解决方案2】:

      我在 Google 内部做了一些关于特定广告问题的挖掘工作。抱歉,拖了这么久。

      Firebase 测试实验室在 this web page 上记录其移动地址范围。如果你使用谷歌移动广告应该没问题,谷歌已经忽略了来自这些地址范围的广告展示。如果您使用其他广告 SDK,您可能需要联系他们并要求他们忽略这些范围内的展示次数。这样您就完全不需要修改您的应用了。

      【讨论】:

      • 感谢您的反馈。是的,Google/Firebase 提供了要忽略的 IP 列表。我相信这些 IP 应该默认在 Unity Ads 端被阻止,但这只是问题的一方面。另一方面,如果我们忽略 Unity 上的广告,但仍会在发布前测试中显示它们,Google 将使用它们将您的应用错误地标记为“有问题”,因为文本过小、语言错误……等等。基本上,它会将广告视为您应用的一部分。所以对我来说,一个更好的方法 - 根本不展示广告。
      猜你喜欢
      • 2019-02-21
      • 2021-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多