> >

ShareSDK Android for Unity3D (旧版本

1、通用部分集成步骤

下载ShareSDK的Unity3D工具类

打开Github下载Unity3DShareSDKSample项目。将项目中的Unity3dDemo/Assets/Plugins目录拷贝到您的项目的Assets目录中,或双击sharesdk-unity3d-plugin.unitypackage导入相关文件。 注意该操作可能会覆盖您原来已经存在的文件!

挂接ShareSDK脚本

打开Plugins目录,将ShareSDK.cs脚本文件拖动到Main Camera对象中进行脚本挂接。

700px-u3d_doc_001

注意:如果ShareSDK.cs并非挂载在Main Camera对象或者Main Camera对象修改为其他名字时,需要调用ShareSDK. setCallbackObjectName设置回调对象名称。否则会导致需要回调的接口无法正常回调,设置代码如下:

ShareSDK.setCallbackObjectName(“CallbackObjectName”);

初始化ShareSDK,在挂接的对象的Start方法中对象ShareSDK进行初始化:

ShareSDK.setCallbackObjectName("Main Camera");
ShareSDK.open ("api20");

然后初始化社交平台,代码如下:

Hashtable sinaWeiboConf = new Hashtable();
sinaWeiboConf.Add("app_key", "568898243");
sinaWeiboConf.Add("app_secret", "38a4f8204cc784f81f9f0daaf31e02e3");
sinaWeiboConf.Add("redirect_uri", "http://www.sharesdk.cn");
ShareSDK.setPlatformConfig (PlatformType.SinaWeibo, sinaWeiboConf);

注意:其中配置社交平台信息中的配置项说明,请参考《社交平台配置项说明》文档。

分享内容,先构造分享内容结构,代码如下:

Hashtable content = new Hashtable();
content["content"] = "this is a test string.";
content["image"] = "http://img.baidu.com/img/image/zhenrenmeinv0207.jpg";
content["title"] = "test title";content["description"] = "test description";
content["url"] = "http://sharesdk.cn";
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";

然后将内容传入分享接口:

ShareResultEvent evt = new ShareResultEvent(ShareResultHandler);
ShareSDK.showShareMenu (null, content, 100, 100, MenuArrowDirection.Up, evt);

其中shareResultHandler为回调方法,其定义如下:

void ShareResultHandler (ResponseState state, PlatformType type, Hashtable shareInfo, Hashtable error, bool end)
{
    if (state == ResponseState.Success)
    {
         print ("share result :");
         print (MiniJSON.jsonEncode(shareInfo));
    }
    else if (state == ResponseState.Fail)
    {
         print ("fail! error code = " + error["error_code"] + "; error msg = " + error["error_msg"]);
    }}

用户授权调用SDK中的authorize方法可进行用户授权。代码如下:

AuthResultEvent evt = new AuthResultEvent(AuthResultHandler);
ShareSDK.authorize(PlatformType.SinaWeibo, evt);

其中authResultHandler为回调方法,其定义如下:

void AuthResultHandler(ResponseState state, PlatformType type, Hashtable error) 
{
     if (state == ResponseState.Success)
     {print ("success !");
} 
else if (state == ResponseState.Fail)
{ 
     print ("fail! error code = " + error["error_code"] + "; error msg = " + error["error_msg"]); }
}
获取用户资料,调用SDK中的getUserInfo方法可获取授权用户信息。代码如下:
GetUserInfoResultEvent evt = new GetUserInfoResultEvent(GetUserInfoResultHandler);
ShareSDK.getUserInfo(PlatformType.SinaWeibo, evt);

其中getUserResultHandler为回调方法,其定义如下:

void GetUserInfoResultHandler (ResponseState state, PlatformType type, Hashtable user, Hashtable error)
{
if (state == ResponseState.Success)
{
print ("get user result :");
print (MiniJSON.jsonEncode(user));
}
else if (state == ResponseState.Fail)
{
print ("fail! error code = " + error["error_code"] + "; error msg = " + error["error_msg"]);
}
}

2、Android部分集成步骤

1、当您将项目中的Unity3dDemo/Assets/Plugins目录拷贝到您的项目的Assets目录中,或双击sharesdk-unity3d-plugin.unitypackage导入相关文件时,已经将ShareSDK的快速集成到了您的项目中。

注意:直接复制Plugins文件夹时,包含了libs/demo.jar这个文件,按本集成步骤时,请先删除它。另外可能会覆盖了您原来的文件,请酌情处理。

20140909161050

其中的OneKeyShare.jar包是“一键分享”功能,里面包含了ShareSDKUtils类,它是您项目中C#代码和ShareSDK沟 通的桥梁,OneKeyShare.jar打包自Android_Java_Demo演示项目的cn.sharesdk.onekeyshare和 cn.sharesdk.unity3d这两个包。

注意: demo.jar包含了属于您自己创建的java文件,所以不能把gen下载的R.java,BuildConfig.java导出来,否则会造成OneKeyShare包UI混乱。如图:

a

2、ShareSDK预处理
方法一:请打开您继承自UnityPlayerActivity的类,在其onCreate方法中添加一行 ShareSDKUtils.prepare(this.getApplicationContext());,如下图:

b

方法二:在AndroidManifest.xml的application标签添加 android:name=”cn.sharesdk.unity3d.ShareSDKApplication”,如图:

c

3、Plugins目录中的ShareSDK.cs是供Unity3D开发者调用的接口,此类会将请求分发给ios或android,通过这两个平台的不 同实现代码,调用ShareSDK的功能,ShareSDK.cs挂接到您的GameObject上,在GameObject的Start方法中添加如下 代码:

u3d_doc_009

其中的“Main Camera”是GameObject的名称。

4、在打算调用ShareSDK的地方使用与如下类似的代码:

u3d_doc_010

其 中的AuthResultEvent、GetUserInfoResultEvent和ShareResultEvent是“授权”、“获取资料”和“分 享”操作的回调,如果不需要回调,可以设置为null。而AuthResultHandler、GetUserInfoResultHandler和 ShareResultHandler是回调事件的委托方法,当回调不为null时,需要在您的脚本中实现这三个方法,用于处理自定义的操作响应。