Флаттер родной андроид обратный звонок - PullRequest
0 голосов
/ 21 марта 2019

Я работаю над приложением флаттера, которое требует помощи некоторых собственных кодов Android.Чтобы быть более конкретным, я хочу интегрировать рекламную сеть под названием «IronSource» для показа рекламы в моем приложении.Но в настоящее время они не предоставляют библиотеку для флаттера, поэтому я написал необходимые коды на языке Java и сделал вызов платформы для показа рекламы.Объявление показывается успешно, но у меня возникла проблема с прослушиванием предоставленных ими методов обратного вызова.

Я опубликую то, что я пробовал до сих пор.

new MethodChannel(getFlutterView(), CHANNEL).setMethodCallHandler(
            new MethodCallHandler() {
                @Override
                public void onMethodCall(MethodCall call, Result result) {
                    if (call.method.equals("loadInterstitialAd")) {
                      IronSource.loadInterstitial();
                    } else {
                      result.notImplemented();
                      }
                      }
            });

ВышеМетод прослушает канал и загрузит рекламу.Однако вот некоторые из методов обратного вызова, которые доступны в собственной библиотеке:

public void onInterstitialAdLoadFailed
public void onInterstitialAdOpened()
public void onInterstitialAdClosed()
public void onInterstitialAdShowSucceeded()

и так далее ...

Теперь я не понимаю, как получить доступ к этим методам во флаттере инаписать свой собственный код.

Любая идея / предложение будет оценено.
Спасибо

1 Ответ

0 голосов
/ 22 марта 2019

Вы можете определить некоторые Integer значения для onInterstitialAdLoadFailedonInterstitialAdOpenedonInterstitialAdClosedonInterstitialAdShowSucceeded и вызвать Result.onSuccess(Object) в этих методах обратного вызова. Вот пример кода:

Родная часть:

Result mResult;
new MethodChannel(getFlutterView(), CHANNEL).setMethodCallHandler(
    new MethodCallHandler() {
        @Override
        public void onMethodCall(MethodCall call, Result result) {
            if (call.method.equals("loadInterstitialAd")) {
              IronSource.loadInterstitial();
              mResult = result;//save the result
            } else {
              result.notImplemented();
            }
        }
    });

 public void onInterstitialAdLoadFailed(){
     mResult.success(0);
 }
 public void onInterstitialAdOpened(){
     mResult.success(1);
 }
 public void onInterstitialAdClosed(){
     mResult.success(2);
 }
 public void onInterstitialAdShowSucceeded(){
     mResult.success(3);
 }

Флаттерная часть:

int resultCode = await loadAds();
if(resultCode == 0){ ... }
else if(resultCode == 1){ ... }
else if(resultCode == 2){ ... }
else if(resultCode == 3){ ... }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...