中易网

手游渠道SDK接入中的回调会丢单怎么办?

答案:2  悬赏:60  
解决时间 2021-02-10 17:49
手游渠道SDK接入中的回调会丢单怎么办?
最佳答案
每个渠道的技术力量不同,他们的支付接口负载和稳定性都不同,偶尔丢单属于正常,一般渠道都会做循环重发,以确保订单正常
全部回答
对于每个游戏,只需要接入抽象层,而每个渠道sdk的接入,就是该抽象层的一个实现而已。最后通过一键打包工具来完成最后的产出。那么,我们先来看看,游戏怎么来调用这个抽象层。 我们假设我们已经开发了一款游戏,面临上线,需要接入sdk,需要接入uc,当乐,91,360,小米等渠道。因为采用u8 sdk统一接入框架的思想,游戏工程本身不耦合具体的每个渠道sdk,而只是调用u8 sdk抽象层。那么,根据上一篇文章谈到的抽象层,我们就来看看如何调用。 首先,我们用eclipse新建一个android工程,作为我们这个模拟的游戏工程。这里需要说一下,如果你不是直接使用android开发的游戏,而是采用像unity3d,cocos2d等游戏引擎,其接入也是一样的。只是多了一层jni调用。我们新建一个主运行的activity: [java] view plaincopy package com.u8.sdk.demo; import com.u8.sdk.iu8sdklistener; import com.u8.sdk.loginresult; import com.u8.sdk.payparams; import com.u8.sdk.u8sdk; import com.u8.sdk.components.u8pay; import com.u8.sdk.components.u8user; import android.os.bundle; import android.view.view; import android.widget.button; import android.widget.toast; import android.annotation.suppresslint; import android.app.activity; import android.content.intent; public class mainactivity extends activity { @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); u8sdk.getinstance().setsdklistener(new iu8sdklistener() { @suppresslint("showtoast") @override public void onresult(int arg0, string msg) { toast.maketext(mainactivity.this, msg, toast.length_short); } @suppresslint("showtoast") @override public void onloginresult(loginresult loginresult) { toast.maketext(mainactivity.this, "登录成功,sid:"+loginresult.getsid(), toast.length_short); } }); button btn = (button)findviewbyid(r.id.button1); btn.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { pay(); } }); button btnlogin = (button)findviewbyid(r.id.button2); btnlogin.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { login(); } }); u8sdk.getinstance().init(mainactivity.this); } private void login(){ u8sdk.getinstance().runonmainthread(new runnable() { @override public void run() { u8user.getinstance().login(); } }); } private void pay(){ u8sdk.getinstance().runonmainthread(new runnable() { @override public void run() { payparams params = new payparams(); params.setprice(100); params.setserverid("1"); params.setroleid("1"); u8pay.getinstance().pay(params); } }); } public void onactivityresult(int requestcode, int resultcode, intent data){ u8sdk.getinstance().onactivityresult(requestcode, resultcode, data); super.onactivityresult(requestcode, resultcode, data); } public void onpause(){ u8sdk.getinstance().onpause(); super.onpause(); } public void onresume(){ u8sdk.getinstance().onresume(); super.onresume(); } public void onnewintent(intent newintent){ u8sdk.getinstance().onnewintent(newintent); super.onnewintent(newintent); } public void onstop(){ u8sdk.getinstance().onstop(); super.onstop(); } public void ondestroy(){ u8sdk.getinstance().ondestroy(); super.ondestroy(); } public void onrestart(){ u8sdk.getinstance().onrestart(); super.onrestart(); } public void onbackpressed(){ u8sdk.getinstance().onbackpressed(); super.onbackpressed(); } } 大家可以看到,在我们这个模拟的游戏中,接入sdk抽象层是一件多么easy的事情,就是在oncreate里面进行初始化操作: [java] view plaincopy u8sdk.getinstance().init(mainactivity.this); 同时,如我们之前所说,我们是基于监听器模式的设计,我们需要设置一个监听,当具体sdk有状态变更,成功或者失败时,我们可以得到具体的信息: [java] view plaincopy u8sdk.getinstance().setsdklistener(new iu8sdklistener() { @suppresslint("showtoast") @override public void onresult(int arg0, string msg) { toast.maketext(mainactivity.this, msg, toast.length_short); } @suppresslint("showtoast") @override public void onloginresult(loginresult loginresult) { toast.maketext(mainactivity.this, "登录成功,sid:"+loginresult.getsid(), toast.length_short); } ); 其中,onresult在调试的时候,可以做一个toast输出。onloginresult则是渠道sdk登陆成功时的回调。在这里就是需要去做我们之前整个登陆流程里的第四步(u8appid,sid)访问u8 server获取一个接下来登陆认证使用的一个token。 这样,初始化就完毕了。然后,就是在需要调用登陆界面的地方,调用: [html] view plaincopy u8user.getinstance().login(); 在需要调用支付界面的地方调用: [html] view plaincopy u8pay.getinstance().pay(params); 需要注意的是,这些接口需要在ui 线程中调用,所以,我们需要使用u8sdk.getinstance().runonmainthread(): [java] view plaincopy u8sdk.getinstance().runonmainthread(new runnable() { @override public void run() { u8user.getinstance().login(); } ); 最后,我们需要重写activity相关的系统事件方法,在对应的方法里面,加上u8 sdk对应方法的调用。比如: [java] view plaincopy public void onpause(){ u8sdk.getinstance().onpause(); super.onpause(); } 这样,对于我们这个“游戏”来说,就算完成了sdk的接入了。大家可以看到,对于游戏来说,接入是一件很简便的事。它不用考虑后面怎么打包,怎么生成渠道包,怎么管理配置,怎么升级,。。。对于ta,到这里就结束了。 要是还不能解决? 或者你有更多编程开发上的其他问题 你来我们群里说吧 这里是开发者互相学习交流的 有大神 让他们给你解释你的疑问 q un号: 188 168040
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
水的液化是否存在化学平衡
小学五年级自然科学题
祝四精品水果批发这个地址在什么地方,我要处
上海武术考级中考有加分吗
在女生眼里可爱的男生是怎么样的
我家玩具贵宾狗走路总是拖着屁股,走两步就要
从义乌到宁波自驾路线是什么?
高中X1=1/2,Xn+1=2Xn/(Xn^2+1)求证:(X1-X2)^2
求电影李连杰演的冒险王的最后大结局哼曲
一道关于物理力的计算题!!!!求解!!!!
请问老榆木家具,现在都有什么牌子啊,求推荐
求一部电影大概内容几个人开着面包车去旅行
通宝轮胎山东总代理在哪里啊,我有事要去这个
早上一醒就玩手机好吗?
佳鑫综合超市我想知道这个在什么地方
推荐资讯
越南字toi la 中国字叫什么?
求助,我的风云2保险丝盒说明图
空调在床的上方 睡觉时总担心空调会掉下来砸
山东财经学院在职mba怎么样
马站林场在哪里啊,我有事要去这个地方
我不想当网红谁唱的,歌词是什么,是mc佳佳唱
贵州省贵阳市云岩区书锦中学代码号是多少?
5元大型自助洗车场在什么地方啊,我要过去处
买女士真皮鞋去京东好还是天猫好
求各种好看的小说,古代,现代,穿越,只要好
我一直分不清东西南北怎么办?在我们从小生活
室外温度35度 轿车停在阳光下 中午的时候 车
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?