最近公司的大厅要重做,我协助主程一起制作新大厅和新框架,前面制作的编辑器也派上了用场。等全部功能做完后我会再写一个复盘,这两天主程在忙于写热更新的功能,所以把接入分享SDK功能的任务交给了我,ShareSDK官网的文档比较分散,而且关于Unity的文档比较简略,所以还是有不少的坑。写篇博客分享一下,并加强理解记忆。

  第一步,先去ShareSDK的官网下载最新版本的ShareSDK(完全免费)。地址:http://www.mob.com/

  我们选择ShareSDK For Unity3D,页面会直接跳转到GitHub,把最新版本的压缩包下载回来。

  

解压后会得到这个目录,使用Unity打开下面的文件夹可以看到官方的Demo项目。里面有大致的实现流程

初步接入SDK还是可以参照官方的文档,真的非常简单。文档地址:http://wiki.mob.com/Unity3D%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E6%8C%87%E5%8D%97/

我们直接把ShareSDK For U3D导进项目

首先我们要在官网注册一个账号,然后点击进入后台,创建一个新工程,再添加产品-选择ShareSDK。

这样我们就有了一个AppKey和一个AppSecret,把他们输入你Unity中挂载在物体上的ShareSDK脚本上

这时候我们会发现DevInfo下面会有很多的平台,我们进入ShareSDKDevInfo,把你不需要的平台注释掉或者删掉

以前的版本在这里注释掉,游戏中呼出菜单就不会再出现这些平台了,但是现在还需要再做一步,这个留到下文会讲到。

有些平台下面会有一个叫做BypassApproval的选项,这是绕过验证的意思,如果我们开启了这个bool那么就只能分享图文,功能不全。但是不需要账号就可以分享,如果我们想需要使用分享链接之类的更全面的功能,则需要关闭这个选项,但是这就需要另一个条件。

那就是除了ShareSDK的账号,我们想在哪个平台进行分享还要有这个平台的开发者账号,以微信平台为例,我们要现在微信开放平台申请一个账号

地址:https://open.weixin.qq.com/

注册完账号后可以创建一个移动应用。这里有一点值得提一下,关于应用签名,可以在网上下载一个获得签名的软件,把游戏和这个软件都装到手机上然后获取一下你的游戏的签名就可以了。

https://open.weixin.qq.com/cgi-bin/readtemplate?t=resource/app_download_android_tmpl&lang=zh_CN 在这里下载需要的获取签名软件

等待微信审核通过后你的应用会有一个AppID和一个AppSecret。把它填到Unity中ShareSDK脚本中

到了这一步,配置算是完成了一半了。根据官网的文档我们可以用ShareSDK创建实例,然后给它赋值,给它添加回调

ssdk.ShowPlatformList可以呼出平台UI面板,让你选择平台,这时候你会发现怎么注释掉的平台还是全都显示出来了。不知道这个是不是BUG,但是是有办法解决的。

这时把项目的包名改成和微信开放平台一致后,打出的包应该可以成功进行分享了,可是你很快就会发现,程序并没有走回调,这是为毛呢?

我们打开项目目录下\Plugins\Android\ShareSDK的AndroidManifest.xml配置文件,首先把最顶上的package = 改成和微信开放平台还有项目都一致的包名。拉下来我们会看到一个微信分享回调的配置,在原先的.wxapi.WXEntryActivity前面加上你的包名

这还不算完,因为配置文件里的包名改变了但是Jar包的Package的名称并没有改,这时候我们需要去下载一个Eclipse。好在博主懂一些JAVA

Eclipse还是很好用的,我们下载回来后使用它打开我们从GitHub下载过来的ShareSDK压缩包中的那个Android_Java_Demo文件夹,这是一个光放的安卓的Demo项目,

在Src中找到我们的wxapi包,右键Refactor->Rename,把它改成我们项目中的包名.wxapi然后在src上右键Export选择Java里的JAR file。

点击Nex在左上角把我们刚刚重命名过的包打上勾(需要几个打几个)把Jar包命名为DemoCallback.jar

然后我们进入项目的\Plugins\Android\ShareSDK\libs目录,用刚刚生成的DemoCallback.jar包替换这里的老Jar包。前面说的平台会全部显示出来的问题,只需要在这个目录删掉不需要使用的平台jar包即可。注意不要删掉sharesdk core的jar包

这时我们再打包运行发现可以正常使用回调了。如果有问题的话检查一下包名签名等。签名的问题我们可以打包的时候用Unity创建一个KeyStore设置好密码,以后生成别的包可以直接使用。生成keystore可以参考这里:http://www.cnblogs.com/heisaijuzhen/p/4346571.html

这时候我们使用的是ShareSDK自带的平台选择UI,如果想使用自己的UI可以使用无UI分享,自己在按钮上注册调用分享功能的实现,具体实现步骤没有太大区别只需要把这里最后的ShowPlatformList换为ShowShareContentEditor传入需要的平台和设置好的分享内容即可直接跳转到分享平台

到这里也就完毕了,IOS的话我现在没有MAC用还不好说,但是大致的流程都有了,也就是踩一踩坑的事了,有不懂的地方大家可以互相交流

在Unity3D项目中接入ShareSDK实现安卓平台微信分享功能(可使用ShareSDK默认UI或自定义UI)的更多相关文章

  1. Nacos(四):SpringCloud项目中接入Nacos作为配置中心

    前言 通过前两篇文章: Nacos(二):Nacos与OpenFeign的对接使用 Nacos(三):SpringCloud项目中接入Nacos作为注册中心 相信大家已经对Nacos作为注册中心的基本 ...

  2. AndroidStudio用微信官方方法接入微信分享功能

    转载请注明出处:http://www.cnblogs.com/wangoublog/p/5367950.html 现在微信的功能众所周知,用户量.影响力也是惊人,很多应用接入微信的功能已成为一种不可缺 ...

  3. android APP 中微信分享功能实现 的总结

    //花了很长时间最终完成了微信分享功能,中间走了很多弯路,在此做一下小结,希望对在应用中使用到微信分享的朋友有所帮助. 主要问题就是下面两个: 1.为什么运行了项目之后,微信分享只是闪了一下就没有了? ...

  4. 如何正确的在项目中接入微信JS-SDK

    微信JS-SDK的功能 如果你点进来,那么我相信你应该知道微信的JS-SDK可以用来做什么了.微信的官方文档描述如下. 微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包. ...

  5. unity3D项目中如何避免硬代码(C#)

    平时做项目,代码中是不允许出现硬代码的,一般我们是怎么处理的呢? 那么硬代码又是什么呢? 我们俗称的硬代码:eg:   label.text = "欢迎来到梦幻岛";  这样我们俗 ...

  6. Nacos(二):SpringCloud项目中接入Nacos作为注册中心

    前言 通过上一篇文章:Nacos介绍简单了解了Nacos的发展历程和现状,本文我们开始Nacos试水的第一步: 使用Nacos做注册中心 上周末(7.6)Nacos发布了V1.1.0版本,这次更新支持 ...

  7. 在ASP.NET项目中使用CKEditor +CKFinder实现图片上传功能

    前言 之前的项目中一直使用的是FCKeditor,昨天突然有个想法:为什么不试一下新的CKEditor呢?于是花了大半天的时间去学习它的用法,现在把我的学习过程与大家分享一下. 谈起FCKeditor ...

  8. 【Android进阶】使用第三方平台ShareSDK实现新浪微博的一键分享功能

    在公司最近的一个项目中,需要实现一键分享功能,在这里我使用的是第三方平台ShareSDK,将使用经验与大家分享 先看效果图 主界面 分享界面 由于第一次使用,所以需要先进行新浪授权,授权界面 分享结果 ...

  9. 在Android中使App高速、简单地支持新浪微博、微信、QQ、facebook等十几个主流社交平台的分享功能

    前言 在如今的APP或者游戏中,分享功能差点儿已经成为标配.分享功能不但能够满足用户的需求.也能够为产品带来很多其它的用户,甚至能够对用户的行为.活跃度.年龄段等情况进行数据统计,使得软件公司能够对产 ...

随机推荐

  1. Day2 - Python基础2习题集

    1.购物车程序 product_list = [ (), (), (), (), (), (), ] shooping_list = [] salary = input("Input you ...

  2. Dojo初探之1:AMD规范,编写符合AMD规范(异步模块加载机制)的模块化JS(其中dojo采用1.11.2版本)

    一.AMD规范探索 1.AMD规范(即异步模块加载机制) 我们在接触js的时候,一般都是通过各种function来定义一些方法,让它们帮我们做一些事情,一个js可以包含很多个js,而这些functio ...

  3. grunt中常见的插件

    /** * 需要用到的文件夹有 js(src) css image html */ gulp是一种自动化构建工具,可以增强我们的工作流程,他是基于 Node.js 构建的,与gruntjs相比,gul ...

  4. Java通过jxl解析Excel文件入库,及日期格式处理方式 (附源代码)

    JAVA可以利用jxl简单快速的读取文件的内容,但是由于版本限制,只能读取97-03  xls格式的Excel. 本文是项目中用到的一个实例,先通过上传xls文件(包含日期),再通过jxl进行读取上传 ...

  5. SQL Server 实现Split函数

    添加一个表值函数. CREATE function [dbo].[fnSplit] ( ), --要分割的字符串 ) --字符串之间的分隔符 ) ,), TempName )) as begin de ...

  6. Bash中的字符串变量扩展

    1.向尾部方向的最小化删除 (%) $pathname="/usr/bin/local/bin"$echo ${pathname%/bin*}/usr/bin/local 2.向尾 ...

  7. C#中switch的使用

    今天在网上看到有人给出这么一个程序需求,博主就拿来回忆回忆C#中switch的用法 程序需求如下: 根据星期几(一 ~日) ,输出特价菜“一”.“二”.“三”,输出“干煸扁豆6元.”“四”.“五”,输 ...

  8. 2个问题,解决tomcat启动一闪而过和运行tomcat/bin目录下的startup.bat时报错(the CATALINA_HOME environment variable is not defined correctly)

    1.除手动使用开始菜单自启动或者程序启动TOMCAT时TOMCAT一闪而过,这时候是发生了错误,这时候我们打开BIN目录下的“startup.bat”文件,编辑,在结尾添加pause命名,这样在CMD ...

  9. [0] WCF开发下,提示HTTP 无法注册 URL 进程不具有此命名空间的访问权限

    Visual Studio以管理员的身份运行就可以了.

  10. AngularJS <a> 超链接标签不起作用?

    问题描述: Angular JS app中,使用超链接标签<a href='location'>click</a> 不起作用. 解决方法: 如果你不巧配置了$locationP ...