http://www.cnblogs.com/alongu3d/p/3627936.html

Untiy 接入 移动MM 详解

第一次接到师傅的任务(小龙),准备着手写untiy接入第三方SDK的文章(android 方向),第一次写故而写的不好的地方不要吐槽。如有兴趣可加63438968(untiy 开发群)进行探讨。

本文主要已 unity 和android工程为基础进行解析分析。其次因目前各地sdk平台与unity程序有不兼容问题,故而导致了在发布后会缺少文件。本文也提供了一个解决方案供大家参考。

具体工程可加群63438968 进行下载。如有美术人员可加 185762832

20140324 熊熊家族-树袋熊宗宗Boss

一eclipse

1.1 在接到接入哪家平台之后,首先做的第一件事,是登录到这个平台官网,下载最新的SDK,按照开发文档内容进行查找,找到哪段代码是对应的什么方法。并新建工程,写成自己的方法。以下已移动MM(2.3.0) 为例做介绍。

移动MM官网 http://dev.10086.cn/iap/?action=down&areaid=1354082900

开发文档在工程内

1.2 下载完成之后,打开移动MM 的demo。放在android手机上,先进行了解,并将demo中的 对应的代码找出来。

1.3 确定之后就可以写自己的工程了。接入工程有几个地方需要注意,首先是jay包 ,jay包即是第三方平台的jay包如图所示:

其中 armeabi mmBilling.2.3.0.jar是移动MM平台必须放入的(在下载的SDK内会找到),android-support-v4.jay是android工程自动生成的。

Unit-classes.jar(在unity引擎内可以找到,如果找不到就直接搜索classes.jar即可)是 unity的jay包

备注:导入方式除了正常的拖拽到libs内 ,也可以在Properties-Java Build Path-Libraries-点击“Add JARs…”按钮,在弹出窗口中,选中jar文件,但此方法是按照绝对路径,故如果工程换位置的话,会导致查找不到jar。故而不建议采取此方法。如图

1.4 添加完成jar之后就需要 在配置文件AndroidManifest.xml中添加必要的声明文件。如图:(如果需要可在demo中查找到)

备注:以上是前期准备工作,具体的APPID、APPKEY、PAYCODE,以及硬件计费软件计费等参数。可登录到官网注册并且开发应用即可获取相应的参数。

1.5 准备好了就可以进行开发了。以下内容指示做举例 并不一一将代码展现出来。

1.5.1 第一 ,需要将主activity 继承 UnityPlayerActivity

备注:UnityPlayerActivity 是继承自activity的

1.5.2  准备接入。已初始化为例:

private  String mAPPID = "000000000000";

private  String mAPPKEY = "0000000000000000";

public void Init(String  APPID,String APPKEY){

mAPPID=APPID;

mAPPKEY=APPKEY;

Log.i("ZD", "appid"+mAPPID+"appkey"+mAPPKEY);

runOnUiThread(new Runnable() {

@Override

public void run() {

IAPHandler iapHandler = new IAPHandler(myActivity);

mPaycode = readPaycode();

mProductNum = readProductNUM();

mListener = new IAPListener(myActivity, iapHandler);

purchase = Purchase.getInstance();

try {

purchase.setAppInfo(mAPPID, mAPPKEY);

} catch (Exception e1) {

e1.printStackTrace();

}

try {

purchase.init(myActivity, mListener);

} catch (Exception e) {

e.printStackTrace();

return;

}

}

});

}

备注:

mAPPID ,mAPPKEY 需要在unity内传参过来。

因unity 掉sdk平台代码,会使用主线程,并修改UI,但大部分在修改主UI的时候会出现致命错误,故而需要添加在子线程中。添加子线程现在总结了三种方法,供大家参考。

其一:runOnUiThread(new Runnable() {

@Override

public void run() {

// TODO Auto-generated method stub

}

});

其二:private Handler myHandler=new Handler()

{

public void handleMessage(Message msg) {

switch (msg.what) {

case 0:

break;

default:

break;

}

}

};

myHandler.sendEmptyMessage(0);

其三:

new Handler(Looper.getMainLooper()).post(new Runnable(){

@Override

public void run(){

}});

以上三种方式都可实现在子线程 完成逻辑处理。具体看哪个用的上手就用那个 并不统一。

1.6 在完成所有接入之后 就需要写回调 方法了。而返回给unity 需要使用到

UnityPlayer.UnitySendMessage(Deductiontomonitor, DeductionSuccess, result);备注:   里面三个参数都是string 格式,如需要传回其他类型可进行转换即可。

第一个参数 :untiy内GameObject物体的名称 如图  如我unity工程内需要处理逻辑的物体名称是GameObject则将Deductiontomonitor改成GameObject即可。

第二个参数: GameObject 物体内所挂方法名

第三个参数: result  是返回的参数,根据需要传递不同参数。

1.7 android工程在将方法都写好之后 ,就需要打包jay。步骤如下:

工程右键-export - JAR file -next-Browse(选择存放的路径)-finish即可

备注:以上是android工程 ,具体代码加群在群共享内。

二、Unity

2.1 新建unity工程,并在工程内新建文件 文件名必须是Plugins(untiy启动顺序此为第三启动顺序,如果其他文件untiy是在初始化的时候是不访问的)在Plugins内创建文件Android也就是android插件 。然后添加文件如图:

添加四个文件 :配置文件 、 bin(android 打包的jay)、libs( 第三方平台的sdk的jay包)  res(资源文件) 其他无用的 就都删掉,避免出现未知问题。

2.2 将unity 修改成 android工程

画了四个横线

第一是发布之后公司的名称

第二是发布之后应用的名称

第三是android工程的包名,必须一致,否则会出问题。如果不知道可打开AndroidManifest内找:

第四是 包含两个参数 一个是ARMv7 ARMv6 其中ARMv6是低端机的意思,目前在 untiy版本3.5.6内还存在,更高版本此选项已无。 对于低端机 如果不选择ARMv6而发布android应用,在低端机是无法运行的。

2.3 以上是 unity的准备工作,做好之后 就可以写unity掉android的代码了

同样只是举例,具体代码 请在群共享内下载

备注: using 是c#的方法,这个方法非常有用 在using ()中新建的对象,会在{}结束的时候自动关闭和释放,不需要你手动进行。

其一:AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer")

androidJavaClass英文直意 安卓java类。括号内的

com.unity3d.player.UnityPlayer   代表android工程的路径com.unity3d.player.UnityPlayer    是总的路径意思,

如果修改 可以修改成 android 的包名+类名也是可以的 例如

则可以将com.unity3d.player.UnityPlayer  修改成

Com.example.ydmmtext.Demo

其二: AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity")

AndroidJavaObject androidJava物体的名称 可以进行指定,如:在初始化的时候进行指向

myactivity=UnityPlayer.currentActivity;

写的不太好,如有兴趣可访问

http://www.cnblogs.com/U-tansuo/archive/2013/03/13/unity3d_android_2.html

内有 介绍

其三

jo.Call("Init",APPID,APPKEY);

意思是访问android工程 内的Init 方法,并传递两个参数 。

Android工程对于代码

这样就可以使 unity 访问 android工程。

2.4 回调:在很多时候 unity调用android之后 还需要android返回给unity信息,如支付之后,用户是 支付成功、支付失败、还是支付取消。都需要返回给unity,并进行相应逻辑处理。

2.4.1 在android工程内

而unity对应的代码是

这样即可实现 android 回调unity

2.5 写完 调用和回调方法之后。在给大家分享一个工厂代码,即方便unity 代码之间的调用,如图:

如进行调用的话,直接  YDMM.Instance.Init(appId,appkey);  即可

2.6 写完之后即可进行发布了。但在发布的时候 经常会出现 无法发布APK的问题,这种问题多为 bin libs res这三个文件导致,不是多放文件就是少放文件了。导致资源找不到等问题。多注意 多看各个平台的开发文档即可。

三 、 在发布出去APK后 也算是大功告成了。但有的sdk平台 如移动MM 、多盟、百度移动联盟、都有兼容问题,即在APK根目录下该有的文件并未自动生成,而这时候就需要自己手动添加了。 如何找到缺少文件呢,这时可以打开对应的SDK平台 找到demo 这demo工程内会有eclipse自动生成的APK 。将他的后缀改成zip 即可发现缺少的文件 如图:

改成zip之后打开会发现根目录多了 一些文件,而unity发布之后的apk并没有

这时 就需要手动将缺少的文件 拷贝到自己的apk里头。

3.2 添加以后 还并未操作完成,因android有自己的签名系统,平白的给这签名里头加东西,会导致手机不认识这个程序,故而在添加完成之后 还需要将添加后的APK 进行 重新签名,签名软件有很多。不做过多介绍。在本群内 会提供一个签名软件,供大家使用。

备注: 移动MM 在全部接入完成之后,可以在移动MM平台进行发布,但在发布的时候会遇到无法上传的问题,本人在发布的时候也遇到该问题,后来换了个浏览器解决了该问题。如有类似问题这样操作即可。

四、  以上是移动MM 的接入。以下是日后 更新内容

4.1  如有不会的可在群内进行发问咨询

4.2  以上内容包含了 广告、短信支付、内支付后续会逐步更新完善,另外像广大群友咨询如何更好的接入多家SDK平台。目前这块不是很熟悉。同时接入8家SKD ,但是是进行一一整合的,很不方便管理。寻求网友出教学,简化接入方法。以下是联系方式以及各大平台sdk的链接地址:

开发群号:63438968  博客地址:http://www.cnblogs.com/alongu3d/

设计师群: 185762832

雨松momo 博客地址:http://www.xuanyusong.com/  第18 和19片如果是初学者建议看一下。

Tapjoy_SDK

https://dashboard.tapjoy.com/sdk

有米广告

http://www.youmi.net/apps/sdk

Google Admob

https://developers.google.com/mobile-ads-sdk/docs/dfp/fundamentals#play

艾德思奇

http://mobi.adsage.cn/ac/?adsage_ticket=eyJ0b2tlbiI6IjI3YTkxMjU1OWY5ZjVlYjRmOWU4MTg0OGI3ZDI2NmE4IiwiaG9zdCI6InJzdnIzIn0=

移动游戏基地

版本需要找客服要http://g.10086.cn/spbbs/search.php

电信爱游戏

版本需要找客服要

Google Play 内支付

http://prime31.com/plugins

Domob 多盟 广告

http://www.domob.cn/developers/SDKdownload.htm

Domob 多盟 积分墙

http://www.domob.cn/developers/SDKdownload.htm

新浪微博

http://open.weibo.com/wiki/SDK#Android_SDK

微信SDK

http://open.weixin.qq.com/document/gettingstart/android/

联通VAC

需要找接口人

机锋支付

http://www.gfan.com/dev/gpay/

360手机网游SDK

http://openapi.360.cn/page/sdk_cms

百度移动联盟广告

http://munion.baidu.com/about.html#/sdk/mobSdk

百度移动联盟积分墙

http://munion.baidu.com/about.html#/sdk/statSdk

移动MM

http://dev.10086.cn/iap/?action=down&areaid=1354082900

米迪

http://www.miidi.net/static/developers/sdk.htm

SmartMad亿动智道

http://ads.smartmad.com/selfservice/app/downloadList.m

91SDK

http://bbs.18183.com/forum-91sdk-1.html

UCsdk

http://bbs.9game.cn/thread-3183827-1-1.html

20140324 熊熊家族-树袋熊宗宗Boss

Untiy 接入 移动MM 详解 转相关推荐

  1. 移动用户远程接入L2TP配置详解

    移动用户远程接入L2TP-vpn配置详解 学会查找参考文档,和官方资料很重要 华为企业产品技术支持网站 - 华为 1.话不多说先上图: 图为模拟环境的基础环境配置 模拟软件:ensp 系统环境:win ...

  2. Unity2019接入FaceBook登录详解(Android)

    Unity接入FaceBook 如何获取FaceBook SDK Unity导入Facebook SDK Unity代码 如何获取FaceBook SDK 注册前的准备工作 由于国内网络无法直接打开F ...

  3. Solr参数mm详解

    一般的mm参数设置,比较容易理解(从右到左读,更加好理解),但复杂点的则需要花点时间: 3<90%A positive integer, followed by the less-than sy ...

  4. 华为云nbiot接入示例_详解WIFI NB-IOT接入阿里云平台MQTT协议实现数据传输

    本帖最后由 湖畔科技 于 2020-3-9 15:11 编辑 有很多通信模块只有TCP功能,没有MQTT功能,比如WIFI,W5500等模块,还有一些NBIOT模块,但是又想连接阿里云物联网平台,官方 ...

  5. 详解4种微服务框架接入Istio方案

    本文分享自华为云社区<传统微服务框架接入Istio方案详解>,作者:香菜聊游戏 . 微服务的概念和原理 微服务带来的问题 微服务带来的好处: 解耦了业务,解耦了代码和架构,业务更紧凑,逻辑 ...

  6. 大疆行业无人机接入音视频平台协议详解

    前言 从事大疆行业应用开发有一段时间了,看到很多厂商在做视频回传的时候,都要装个自己的APP,界面很丑不说,还经常卡死,但是大疆其实已经在视频流中携带了很多信息,很多人都不知道,现在把自己的直播开发经 ...

  7. 钉钉接入access_无需开发,IT事件接入钉钉的方法详解

    1.市场在拥抱钉钉 最近一篇名为<为什么有很多企业沉迷钉钉无法自拔>的文章很火,文章不短,其中有一部分阐述了:钉钉抓住以人为核心的"智能协同"差异化路线,帮助企业打破过 ...

  8. Sonic 开源移动端云真机测试平台 - 设备中心接入安卓设备实例演示,Agent端服务部署过程详解

    Sonic 开源移动端云真机测试平台 - Agent端服务部署与安卓设备接入演示 一加8手机连接效果图展示 第一章:环境准备 ① agent-sources 资源包下载 ② Android SDK安装 ...

  9. 钉钉开发者接口文档_无需开发,IT事件接入钉钉的方法详解

    1.市场在拥抱钉钉 最近一篇名为<为什么又很多企业沉迷钉钉无法自拔>的文章很火,文章不短,其中有一部分阐述了:钉钉抓住以人为核心的"智能协同"差异化路线,帮助企业打破过 ...

  10. Sentry For Vue 完整接入详解(2021 Sentry v21.8.x)前方高能预警!三万字,慎入!

    内容源于:https://docs.sentry.io/platforms/javascript/guides/vue/ 系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创 ...

最新文章

  1. 从EEG中解码想象的3D手臂运动轨迹以控制两个虚拟手臂
  2. Spring Boot 2.x基础教程:使用Spring Data JPA访问MySQL
  3. 从理论角度理解L1、L2正则化
  4. fastjson解析多层数据_JSON数据如何进行解析呢,方式有哪些?
  5. 写游戏软件要学什么_为什么要写关于您所知道的(或所学到的)的内容
  6. alibaba 实体转json_JAVA中使用alibaba fastjson实现JSONObject、Object、Json字符串的转换...
  7. python url拼接_简单一文教你如何用python爬虫爬取扇贝单词
  8. linux系统配置设置网络端口映射,Linux 配置端口映射
  9. STAR、6W1H、SMART、PDCA、MKASH原则在精准招聘中的应用
  10. 【干货】ubuntu18.04+win7双系统+双硬盘安装总结
  11. 【Devc++】战斗1.0
  12. Type-c快充加音频芯片深度解析(LDR6023C)
  13. 64位驱动 hp630打印机_m351a驱动-HP 惠普 LaserJet Pro 300 Colour M351a 彩色激光打印机驱动下载5.0.12200.630官方版-东坡下载...
  14. 谷歌学术得到论文被引用信息
  15. 强化学习及Python代码示例
  16. 存储空间无限大,这是一种怎样的体验?
  17. 多任务视频推荐方案,百度工程师实战经验分享
  18. Intel B150芯片组(usb3.0)主板的电脑上安装Win7
  19. [C#问题--WebBrowser继续追踪]WebBrowser在Form程序中使用的感想2
  20. 每天15min-HTML5(1)-学习方法

热门文章

  1. java的reader_Java Reader类
  2. 【签约】ManageEngine卓豪签约中国大饭店 | 智能解析日志、洞察威胁,提升数据安全合规性
  3. android获取汉字拼音首字母,ios/android获取汉字拼音首字母
  4. elementui实现横向时间轴_element ui step组件在另一侧加时间轴显示
  5. 世界第一代电子计算机诞生在,1、世界上第一台电子计算机诞生于
  6. Linux下载源码编译出错,编译小度wifi源码出错!
  7. webserver的使用
  8. OAuth2授权原理
  9. 自己封装特定的Windows系统镜像
  10. java正则判断所有的标点符号_java正则匹配标点符号