flutter项目中创建了插件,使用通道和原生进行通信。
初始化广告时没问题,播放激励视频报错。
sdk使用的最新版5.4.0,flutter项目使用的gradle版本为7.6.3。
插件中和flutter通信部分代码:
@Override
public void onMethodCall(@NonNull MethodCall call, @NonNull Result result) {
if (call.method.equals("getPlatformVersion")) {
result.success("Android " + android.os.Build.VERSION.RELEASE);
} else if (call.method.equals("initAd")) { // 广告初始化
initAd();
// 如果不需要回调数据,参数填null
result.success(null);
} else if (call.method.equals("showAd")) { // 播放广告
showAd.showAd("reward");
result.success(null);
} else {
result.notImplemented();
}
}
插件中播放激励视频的代码如下:
package com.example.uni_ad;
import android.os.Bundle;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import org.json.JSONArray;
import org.json.JSONObject;
import io.dcloud.ads.core.entry.DCloudAdSlot;
import io.dcloud.ads.core.v2.reward.DCRewardAd;
import io.dcloud.ads.core.v2.reward.DCRewardAdListener;
import io.dcloud.ads.core.v2.reward.DCRewardAdLoadListener;
public class ShowAd extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.show_ad);
}
public void showAd(String type) {
switch (type) {
case "reward": {
showReward();
break;
}
}
}
DCRewardAd rewardAd;
/// 激励视频
private void showReward() {
System.out.println("播放激励视频");
if (rewardAd == null) {
rewardAd = new DCRewardAd(this);
rewardAd.setRewardAdListener(new DCRewardAdListener() {
@Override
public void onReward(JSONObject jsonObject) {
}
@Override
public void onShow() {
}
@Override
public void onClick() {
}
@Override
public void onVideoPlayEnd() {
}
@Override
public void onSkip() {
}
@Override
public void onClose() {
}
@Override
public void onShowError(int i, String s) {
}
});
DCloudAdSlot slot = new DCloudAdSlot.Builder().adpid("1974621980").build();
rewardAd.load(slot, new DCRewardAdLoadListener() {
@Override
public void onRewardAdLoad() {
rewardAd.show(ShowAd.this);
}
@Override
public void onError(int i, String s, @Nullable JSONArray jsonArray) {
System.out.println(s);
}
});
}
}
}
1***@qq.com (作者)
试了下是可以的,但是用flutter还是报这个错
2024-07-12 15:11
DCloud_Android_zl
回复 1***@qq.com: 提供一下完整的报错信息
2024-07-12 15:42
1***@qq.com (作者)
回复 DCloud_Android_zl: 完整的报错信息就是上面的,编辑了问题中的代码,你看下
2024-07-12 16:18
DCloud_Android_zl
回复 1***@qq.com: 错误日志被部分截掉了,需要提供一个完整的。然后把initad的代码也发出来
2024-07-12 17:36