当想调用androidSDK里面的接口,当接口里面的行为处理完了之后想要做其他的事时,我们怎么办呢?
如果你写死了,而且不能够随机应变。当需要处理其他的行为时。
例如:当你想调用androId原生广告播放接口时,当广告播放完之后你需要添加金币的行为,这个时怎么加入到接口中,这个就要用了回调了
首先需要在anroid里面加入一个回调接口
1.例如广告接口`
public interface AdCallback {void onDismissed();void onNoAd(AdError adError);void onComplete();void onPresent();void onClick();void onAdSkip();
}
2.需要在unity中也要添加一样的类
public class AdCallback : AndroidJavaProxy
{public Action Dismissed;public Action OnNoAd;public Action OnComplete;public Action OnPresent;public Action OnClick;public Action OnAdSkip;public AdCallback(string interfaceName) : base(interfaceName){}public void onDismissed(){Dismissed?.Invoke();}public void onNoAd(AndroidJavaObject adError){OnNoAd?.Invoke();}public void onComplete(){OnComplete?.Invoke();}public void onPresent(){OnPresent?.Invoke();}public void onClick(){OnClick?.Invoke();}public void onAdSkip(){OnAdSkip?.Invoke();}}
好了前期准备好了
现在就是需要添加广告接口
比如下面是广告接口的类
public class PlayAd implements AdCallback{private AdCallback _adCallback public static void ShowReward(AdCallback adCallback) {Log.e("广告:", "广告");_adCallback = adCallback;//播放广告的逻辑}@Overridepublic void onDismissed() {_Dismissed();}@Overridepublic void onNoAd(AdError adError) {_NoAd(adError);}@Overridepublic void onComplete() {_Complete();}@Overridepublic void onPresent() {_Present();}@Overridepublic void onClick() {_Click();}@Overridepublic void onAdSkip() {_AdSkip();}}
然后就是在unity 里面调用了
public class NewAdMgr
{public const string AdCallbackPath = "com.bytedance.android";private AndroidJavaClass jcAd;public void Init(){
#if UNITY_ANDROIDjcAd = new AndroidJavaClass(AdCallbackPath );
#endif}public void ShowReward_Ad(AdCallback adCallback){//var currentActivity = jc.GetStatic<AndroidJavaObject>("currentActivity");jcAd.CallStatic("ShowReward", adCallback);}public void ShowReward(){AdCallback adCallback = new AdCallback(AdCallbackPath);adCallback.Dismissed = () => { };ShowReward_Ad(adCallback);}
}
public void ShowReward(Action action)
{
AdCallback adCallback = new AdCallback(AdCallbackPath);
adCallback.Dismissed = () => { action?.Invoke();};
ShowReward_Ad(adCallback);
}
这个方法调用就是播放广告
欢迎各位大佬指出问题
本文发布于:2024-02-04 21:59:26,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170717359159982.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |