Я ищу решение о том, как определить, что мое приложение запустилось в отчете перед запуском. Короче говоря, у меня есть игра, которая уже запущена в Google Play с рекламой Unity внутри, и я хочу выпустить обновление. Если я добавлю свою новую версию в Google Play, она будет проверена с помощью отчетов перед запуском и создаст поддельные показы рекламы. Я не могу отключить рекламу с помощью функции "управлять приборной панелью", так как это повлияет на пользователей живой версии. Я не хочу отключать предстартовые репосты, они очень полезны.

Итак, я ищу решение, тиски кода или общие течения потока.

После нескольких дней поиска в интернете мне удалось найти два возможных решения, но ни одно из них не работает.

Решение 1: используя эту документацию - Firebase и StackOwerflow answer и этот пример Unity форум я придумал этот код:

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. На основе другого документа Firebase < Я пробовал также это:

public bool IsTestLab()
{
    return TestLabManager.Instantiate().IsTestingScenario;
}

Может кто-нибудь поделиться, как они обходят эту проблему?

Заранее спасибо!

1
Artyom 11 Апр 2019 в 10:24

2 ответа

Лучший ответ

Для тех, кто все еще ищет решение.

Ошибка заключалась в том, что я читал 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"
    }
}
0
Artyom 15 Апр 2019 в 07:17

Я немного покопался в Google о конкретной проблеме с рекламой. Извините, что так долго.

Лаборатория тестирования Firebase документирует диапазоны своих мобильных адресов на этой веб-странице, Если вы используете мобильную рекламу Google, все будет в порядке, Google уже будет игнорировать показы объявлений с этих диапазонов адресов. Если вы используете другой SDK Ad, вы можете связаться с ними и попросить их игнорировать показы из этих диапазонов. Тогда вам вообще не нужно будет изменять свое приложение.

0
Nick Fortescue 24 Апр 2019 в 18:29