用ShareSDK for Unity分享屏幕截图(android和ios平台)

时间:2022-09-26 15:24:36

分享截屏已经是很多游戏应用必备的功能了,找到了一个国内的插件,虽然用起来还行,但是,还是想吐槽下,跟老外的插件比,真的有差距啊有差距啊有差距啊,啊啊啊。

ShareSDK的官方网站:http://www.mob.com/,使用插件需要注册账号获得key,不过,至少现在是免费的。


我的Unity版本是5.3,xcode版本是7.2,ShareSDK版本是2.7.4


Unity


sdk下载地址:https://github.com/MobClub/New-Unity-For-ShareSDK

用ShareSDK for Unity分享屏幕截图(android和ios平台)


新建一个简单的工程,点击capture按钮以后会截屏并启用默认分享目录。

用ShareSDK for Unity分享屏幕截图(android和ios平台)


导入SDK

用ShareSDK for Unity分享屏幕截图(android和ios平台)


在一个GameObject上添加脚本,ShareSDK是官方的脚本,ShareDemo是我写的。

用ShareSDK for Unity分享屏幕截图(android和ios平台)


ShareDemo.cs

using UnityEngine;
using System.Collections;
using cn.sharesdk.unity3d;

public class ShareDemo : MonoBehaviour
{

private ShareSDK ssdk;

// Use this for initialization
void Start ()
{
ssdk = gameObject.GetComponent<ShareSDK> ();
ssdk.shareHandler = OnShareResultHandler;
}

public void Capture ()
{
ShareContent content = new ShareContent ();
content.SetText ("分享text");
content.SetTitle ("分享title");
content.SetTitleUrl ("http://www.site.com");
content.SetSite ("分享site");
content.SetSiteUrl ("http://http://www.site.com");
content.SetUrl ("http://http://www.site.com");
content.SetComment ("分享comment");
content.SetShareType (ContentType.Image);

//截屏
Application.CaptureScreenshot ("Shot4Share.png");
//设置图片路径
content.SetImagePath (Application.persistentDataPath + "/Shot4Share.png");

ssdk.ShowPlatformList (null, content, 100, 100);
}

//以下为回调的定义:
void OnShareResultHandler (int reqID, ResponseState state, PlatformType type, Hashtable result)
{
// if (state == ResponseState.Success)
// {
// text.text= ("share result :");
// text.text= (MiniJSON.jsonEncode(result));
// }
// else if (state == ResponseState.Fail)
// {
// text.text =("fail! error code = " + result["error_code"] + "; error msg = " + result["error_msg"]);
// }
// else if (state == ResponseState.Cancel)
// {
// text.text= ("cancel !");
// }
}
}


去官网注册账号,获得key

用ShareSDK for Unity分享屏幕截图(android和ios平台)


修改ShareSDK.cs,令appKey等于正确的key。

用ShareSDK for Unity分享屏幕截图(android和ios平台)


Android部分

android的比较简单,唯一要注意的就是,要定制分享平台的时候,是去删文件。(你真是在逗我)

找到plugins/android/sharesdk/libs目录,删除 ShareSDK-平台名字。。.jar文件。

用ShareSDK for Unity分享屏幕截图(android和ios平台)


打包编译,运行结果如下,这是全部分享平台都有的

用ShareSDK for Unity分享屏幕截图(android和ios平台)


点击其中一个平台

用ShareSDK for Unity分享屏幕截图(android和ios平台)


如果,删掉lib文件,定制平台的话是下面的样子

用ShareSDK for Unity分享屏幕截图(android和ios平台)


IOS平台

新版的

不用那么麻烦了,导入新的包,会多一个editor目录,然后发布ios,在xcode里编译即可。不过还是要修改语言。
另外,去除不用的共享时,发布报错,不确定是我操作出错还是其他的问题。
用ShareSDK for Unity分享屏幕截图(android和ios平台)
旧版发布过程如下:

这部分已经不知道如何吐槽了。

首先,修改代码

找到plugins/ios目录下的ShareSDKUnity3DBridge.m文件,

用ShareSDK for Unity分享屏幕截图(android和ios平台)


把不需要的平台注释掉

用ShareSDK for Unity分享屏幕截图(android和ios平台)


然后,在Unity编辑器中,把不需要的平台去掉

用ShareSDK for Unity分享屏幕截图(android和ios平台)


导出到xcode,然后,下载sharesdk的ios插件。

下载地址:http://www.mob.com/#/downloadDetail/ShareSDK/ios

用ShareSDK for Unity分享屏幕截图(android和ios平台)


这里下载可以选择,只勾选需要的平台

用ShareSDK for Unity分享屏幕截图(android和ios平台)


下载以后,解压得到目录ShareSDK

用ShareSDK for Unity分享屏幕截图(android和ios平台)


用xcode打开工程,然后把ShareSDK拖到工程中

用ShareSDK for Unity分享屏幕截图(android和ios平台)



选中copy items if needed

用ShareSDK for Unity分享屏幕截图(android和ios平台)


找到build settings 下面的Library search paths,看到那个被双引号括起来的目录了吗?去掉双引号。(这真的不是bug么)

用ShareSDK for Unity分享屏幕截图(android和ios平台)


找到build phases下的link binary with libraries,按官方说明添加项目(。。。。)

用ShareSDK for Unity分享屏幕截图(android和ios平台)


用ShareSDK for Unity分享屏幕截图(android和ios平台)

需要添加6、7项

用ShareSDK for Unity分享屏幕截图(android和ios平台)


添加完毕

用ShareSDK for Unity分享屏幕截图(android和ios平台)


如果你用xcode7,恭喜你,你会看到一个红色的文件名

用ShareSDK for Unity分享屏幕截图(android和ios平台)


这个时候,要打开build settings 下的other linker flags

用ShareSDK for Unity分享屏幕截图(android和ios平台)



分别添加下面内容,如果不加,会闪退。

-ObjC
-lc++
-lz
-liconv

用ShareSDK for Unity分享屏幕截图(android和ios平台)


你以为可以了吗?错,这个时候编译出来的,是英文菜单。。。。。。

所以,要打开info.plist,把默认的英文改成中文,这真的不是bug?真的不是?

用ShareSDK for Unity分享屏幕截图(android和ios平台)


经过这一番努力,终于可以编译了,

用ShareSDK for Unity分享屏幕截图(android和ios平台)


用ShareSDK for Unity分享屏幕截图(android和ios平台)


终于,ok了。