Flutter原生android回调

Saj*_*ard 4 java android callback dart flutter

我正在开发一个 flutter 应用程序,需要一些本机 Android 代码的帮助。更具体地说,我想集成一个名为“IronSource”的广告网络来在我的应用程序中提供广告服务。但目前他们没有提供flutter的库,所以我用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();
                      }
                      }
            });
Run Code Online (Sandbox Code Playgroud)

上述方法将监听频道并加载广告。但是,这些是本机库中可用的一些回调方法:

public void onInterstitialAdLoadFailed
public void onInterstitialAdOpened()
public void onInterstitialAdClosed()
public void onInterstitialAdShowSucceeded()
Run Code Online (Sandbox Code Playgroud)

等等...

现在我不明白如何在flutter中访问这些方法并编写自己的代码。

任何想法/建议将不胜感激。
谢谢

Jac*_*hen 7

您可以IntegeronInterstitialAdLoadFailed\xe3\x80\x81 onInterstitialAdOpened\xe3\x80\x81 onInterstitialAdClosed\xe3\x80\x81定义一些值onInterstitialAdShowSucceeded并调用Result.onSuccess(Object)这些回调方法。这是示例代码:

\n\n

原生部分:

\n\n
Result mResult;\nnew MethodChannel(getFlutterView(), CHANNEL).setMethodCallHandler(\n    new MethodCallHandler() {\n        @Override\n        public void onMethodCall(MethodCall call, Result result) {\n            if (call.method.equals("loadInterstitialAd")) {\n              IronSource.loadInterstitial();\n              mResult = result;//save the result\n            } else {\n              result.notImplemented();\n            }\n        }\n    });\n\n public void onInterstitialAdLoadFailed(){\n     mResult.success(0);\n }\n public void onInterstitialAdOpened(){\n     mResult.success(1);\n }\n public void onInterstitialAdClosed(){\n     mResult.success(2);\n }\n public void onInterstitialAdShowSucceeded(){\n     mResult.success(3);\n }\n
Run Code Online (Sandbox Code Playgroud)\n\n

颤动部分:

\n\n
int resultCode = await loadAds();\nif(resultCode == 0){ ... }\nelse if(resultCode == 1){ ... }\nelse if(resultCode == 2){ ... }\nelse if(resultCode == 3){ ... }\n
Run Code Online (Sandbox Code Playgroud)\n