Обнаружение предварительного запуска Google Play в Unity - PullRequest
1 голос
/ 11 апреля 2019

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

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

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

Решение 1: используя эту документацию - Firebase и StackOwerflow ответ , и этот пример Форум 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;
}

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

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

Ответы [ 2 ]

0 голосов
/ 24 апреля 2019

Я немного покопался в Google о конкретной проблеме с рекламой.К сожалению, это заняло так много времени.

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

0 голосов
/ 15 апреля 2019

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

Ошибка была в том, что я читал 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"
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...