【3D技术宅公社】XR数字艺术论坛  XR技术讨论 XR互动电影 定格动画

 找回密码
 立即注册

QQ登录

只需一步,快速开始

调查问卷
论坛即将给大家带来全新的技术服务,面向三围图形学、游戏、动画的全新服务论坛升级为UTF8版本后,中文用户名和用户密码中有中文的都无法登陆,请发邮件到324007255(at)QQ.com联系手动修改密码

3D技术论坛将以计算机图形学为核心,面向教育 推出国内的三维教育引擎该项目在持续研发当中,感谢大家的关注。

查看: 5508|回复: 0

[第三方平台插件] (转)Unity开发之接入Sharesdk微信分享Android(一)

[复制链接]
发表于 2015-2-20 18:05:24 | 显示全部楼层 |阅读模式

上周在unitiy工程中接入了sharesdk,按照sharesdk官方给出的教程一步一步做下来,发现还是会存在很多问题,今天周末,闲来无事简单整理下,本人毕业半年编程经验不足,文中定会有许多错误和疏漏,还请各位批评指正,共同学习。

不建议各位直接按照我的这篇文章接入sharesdk微信分享,我写的比较没有条理,首先还请按照官方教程接入,如遇到困难可对照本文中特别提到的几点进行查看。


      首先在unity中建一个简单的工程其其中share按钮用来分享,下面的label用来在真机测试是显示回调信息。接下来去sharesdk官网下载unity版本的sdk,下载之后打开其中的unity3dDemo,将项目中的Unity3dDemo/Assets/Plugins目录拷贝到项目的Assets中,或双击将项目中的sharesdk-unity3d-plugin.unitypackage导入项目中,但是在实际工程中可能在Plugins目录下已经有了其他文件,导入package可能会将原项目文件覆盖,一定要慎重。然后将Plugins内sharesdk.cs文件挂载到Main Camera上,也可以放到其他物体上,但是要在初始化ShareSDK. setCallbackObjectName设置回调对象名称。初始化sharesdk及社交平台

[csharp] view plaincopy


  • //初始化sharesdk  
  •         ShareSDK.setCallbackObjectName("Main Camera");//挂载物体的名称  
  •         ShareSDK.open ("530507a14de4");//此处千万注意,填写你在sharesdk后台申请的appid,由于官方教程没注明,我在这研究了一天  
  •   
  •         //WeChat  
  •   
  •         Hashtable wcConf = new Hashtable();  
  •         wcConf.Add ("app_id", "wxf5a37a867c0fb640");//此处时你在微信平台申请的appid  
  •         ShareSDK.setPlatformConfig (PlatformType.WeChatSession, wcConf);  
  •         ShareSDK.setPlatformConfig (PlatformType.WeChatTimeline, wcConf);  
  •         ShareSDK.setPlatformConfig (PlatformType.WeChatFav, wcConf);  

接下来在代码中构造分享内容[csharp] view plaincopy


  • public void ShowShareMenu(){  
  •         Hashtable content = new Hashtable();  
  •         content["content"] = "this is a test string.";  
  •         content["image"] = Application.persistentDataPath+"/Screenshot.png";  
  •         content["title"] = "title";  
  •         content["description"] = "description";  
  •         content["url"] = "http://www.baidu.com";  
  •         content["type"] = Convert.ToString((int)ContentType.News);  
  •         //content["siteUrl"] = "http://sharesdk.cn";  
  •         //content["site"] = "ShareSDK";  
  •         //content["musicUrl"] = "http://mp3.mwap8.com/destdir/Music/2009/20090601/ZuiXuanMinZuFeng20090601119.mp3";  
  •         print ("OK");result = "OK";  
  •         //将内容传入分享接口  
  •         ShareResultEvent evt = new ShareResultEvent(ShareResultHandler);  
  •         ShareSDK.showShareMenu (null, content, 100, 100, MenuArrowDirection.Up, evt);  
  •     }  

此处我介绍下各字段含义(我问的sharesdk客服,字段错误也会不能正常分享,可以看上面我的例子):content是文本内容   image分享的图片(我是用的截屏,所以是路径apk安装的文件目录,此处可以用网络连接)  title标题    description 是描述 只有部分平台能用到   url是链接(要写外网能打开的完整的链接,另外腾讯平台禁用端口号的链接)   type分享类型 一般默认news就行    sitUrl和site是空间用的。


接着打开Assets/Plugins/Android/asset目录下的ShareSDK.xml  然后各位自习阅读下说明,说明中有几个比较重要的地方:AppKey = "ddd"/> <!-- 修改成你在sharesdk后台注册的应用的appkey"—> 还有就是各平台的appid和appsecret要在这里填写。友情提示:sharesdk集成的社交平台非常多,我们一般不会用到全部,对于不使用的社交平台我们只需要将对应平台内的Enable字段设置为false即可。


本文只写微信部分各字段含义:首先Id和SortiID 这个没有什么必要,不需要管他,appid和appsecret需要把我们在微信平台申请到的填写进去。接下来BypassApproval是否绕过微信的审核,设置为true时候,分享的时候会绕过审核,但是只能分享文字和图片,不绕过审核可以分享链接。


接下来说一下keystore,在微信申请appid的时候会有一项是填写签名,此处一定要填写的MD5码,并且需要把冒号都去掉,把大写转成小写。md5如何获取呢,我们可以先在unity内申请签名,然后用这个签名打包出apk,将apk后缀改成rar解压,解压后找到META-INF文件夹,文件夹内有个CERT.RSA。  打开终端执行keytool -printcert -file /Users/admin/Desktop/hello11/META-INF/CERT.RSA (file后是路径,可以直接把那个文件拖进终端,不需要费事的自己写路径)执行后会看到


复制下MD5值,随便写个字符串转化函数private string lll = "";print (lll.ToLower().Replace(":",""));就能得到了,然后把转化后得到的字符串填写到微信后台就可以了。


以上都没有错误的话,调用那个showsharemenu函数就可以分享了。(测试手机没带回来,我就不传最后效果图啦)恳请各位批评指正。



PS:本人第一次写博客,写的有点乱,只是想把自己工作中遇到的困难记录下,希望以后不会犯同样错误,也希望能对还在sharesdk微信分享坑中的各位提供点微薄的帮助(sharesdk微信好像是最麻烦的),我在研究的时候没找到完整的教程,着实是苦逼……




您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|3D数字艺术论坛 ( 沪ICP备14023054号 )

GMT+8, 2024-4-26 14:33

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表