gpt4 book ai didi

java - Flutter 原生 android 回调

转载 作者:行者123 更新时间:2023-11-29 23:16:24 24 4
gpt4 key购买 nike

我正在开发一个 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();
}
}
});

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

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

等等……

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

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

最佳答案

你可以为onInterstitialAdLoadFailedonInterstitialAdOpenedonInterstitialAdClosedonInterstitialAdShowSucceeded定义一些Integer code> 并在这些回调方法中调用 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);
}

flutter 部分:

int resultCode = await loadAds();
if(resultCode == 0){ ... }
else if(resultCode == 1){ ... }
else if(resultCode == 2){ ... }
else if(resultCode == 3){ ... }

关于java - Flutter 原生 android 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55281688/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com