当想调用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;
//播放广告的逻辑
}
@Override
public void onDismissed() {
_adCallback.onDismissed();
}
@Override
public void onNoAd(AdError adError) {
_adCallback.onNoAd(adError);
}
@Override
public void onComplete() {
_adCallback.onComplete();
}
@Override
public void onPresent() {
_adCallback.onPresent();
}
@Override
public void onClick() {
_adCallback.onClick();
}
@Override
public void onAdSkip() {
_adCallback.onAdSkip();
}
}
然后就是在unity 里面调用了
public class NewAdMgr
{
public const string AdCallbackPath = "com.bytedance.android";
private AndroidJavaClass jcAd;
public void Init()
{
#if UNITY_ANDROID
jcAd = 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);
}
这个方法调用就是播放广告
欢迎各位大佬指出问题