Unity项目工程集成Mob的社会化分享SDK之发布到iOS平台

Unity项目集成Mob的社会化分享SDK之发布到iOS平台
   Mob也属于业界比较流行使用的第三方服务平台。虽然友盟也提供了社会化分享SDK,但是个人感觉没Mob的好使,并且好像友盟后台数据实时更新比较迟缓。另外,值得一提的是,Mob的官网客服咨询确实很给力的,这里给Mob打一下广告 大笑
    该片博客主要是针对Unity项目集成ShareSDK并且发布到iOS平台的步骤详解。另外针对Android平台的下次奉上。

步骤1:首先,前往Mob官网注册账号(如果没有的话)链接   http://mob.com/#/index 。然后登陆,进入后台,为你的App项目iOS版申请AppKey。 注意:App项目发布的版本不同,需要分别申请AppKey。


步骤2:接着下载ShareSDK For Unity3d 




若是打开这个demo工程,目录如下


步骤3:打开你的项目工程,如果你只是要发布到IOS平台的话, 你可以只需把iOS目录下文件、MinijSON以及ShareSDK这些文件复制到你的项目工程中。另外注意的是:在你的项目工程目录结构中,这些导入的文件存放目录结构应与Demo工程一致。

我的项目工程目录结构在导入上述文件后如下截图所示:


步骤4:将ShareSDK.cs挂在到你场景中一致激活的对象身上如MainCamera,又或者自己另外新建一个对象。比如,我在我的项目中新建了一个叫ShareSDK对象,并将ShareSDK.cs脚本挂在它身上( 建议你还是一边参阅Mob关于ShareSDK---Unity3D快速集成指南,一边参考我的这篇博客较好)


另外,你把调用ShareSDK.cs脚本实现我们在项目工程中分享功能的脚本也挂在其身上。比如:我的项目中Demo.cs就是

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

public class Demo : MonoBehaviour {
	
	public GUISkin demoSkin;
	// Use this for initialization
	void Start ()
	{    
		ShareSDK.setCallbackObjectName("ShareSDK");
		//appkey for your project(ios version)in Mob
		ShareSDK.open ("xxxxxxxx");
		
		//Sina Weibo
		Hashtable sinaWeiboConf = new Hashtable();
		sinaWeiboConf.Add("app_key", "xxxxxxxxx");
		sinaWeiboConf.Add("app_secret", "623cb0668d6f6357bcda5db6e432b40f");
		sinaWeiboConf.Add("redirect_uri", "http://cy.kyd2002.com/Picbook/default.aspx");
		ShareSDK.setPlatformConfig (PlatformType.SinaWeibo, sinaWeiboConf);
		

		//QZone
		Hashtable qzConf = new Hashtable();
		qzConf.Add("app_id", "xxxxxxxx");
		qzConf.Add("app_key", "XjNXDmguk4KlySZE");
		ShareSDK.setPlatformConfig (PlatformType.QZone, qzConf);
		
		//WeChat
		Hashtable wcConf = new Hashtable();
		wcConf.Add("app_id", "wxxxxxxxx");
		ShareSDK.setPlatformConfig (PlatformType.WeChatSession, wcConf);
		ShareSDK.setPlatformConfig (PlatformType.WeChatTimeline, wcConf);
		ShareSDK.setPlatformConfig (PlatformType.WeChatFav, wcConf);
		
		//QQ
		Hashtable qqConf = new Hashtable();
		qqConf.Add("app_id", "XXXXXX");
		ShareSDK.setPlatformConfig (PlatformType.QQ, qqConf);
		
	}
	
	// Update is called once per frame
	void Update () 
	{
		if (Input.GetKeyDown(KeyCode.Escape)) {
			ShareSDK.close();
			Application.Quit();
		}
	}
	
	public void ShareFenX()
	{
		Hashtable content = new Hashtable();
		content["content"] = "本应用以小刺猬的生日愿望 —— 制作生日蛋糕为故事导线,呈现了森林哺乳动物温馨友爱的场景,让孩子在丰富的互动体验中了解森林哺乳动物的特点。创意丰富的互动体验让孩子悦读悦美!http://cy.kyd2002.com/Picbook/default.aspx";
		content["image"] = "http://cy.kyd2002.com/Picbook/icon.png";
		content["title"] = "小刺猬的生日蛋糕";
		content["description"] = "小朋友,一起来看看小刺猬这个特别的生日蛋糕吧!";
		content["url"] = "http://cy.kyd2002.com/Picbook/default.aspx";
		content["type"] = Convert.ToString((int)ContentType.News);
		content["siteUrl"] = "http://cy.kyd2002.com/Picbook/default.aspx";
		content["site"] = "互动绘本";
		content["musicUrl"] = "";
		ShareResultEvent evt = new ShareResultEvent(ShareResultHandler);
		ShareSDK.showShareMenu(null, content, 100, 100, MenuArrowDirection.Up, evt);
//		ShareSDK.showShareView (PlatformType.Any, content, evt);
	}
	
	//void OnGUI ()
	//{
	//    GUI.skin = demoSkin;
	
	//    float scale = 1.0f;
	
	//    if (Application.platform == RuntimePlatform.IPhonePlayer)
	//    {
	//        scale = Screen.width / 320;
	//    }
	
	//    float btnWidth = 200 * scale;
	//    float btnHeight = 45 * scale;
	//    float btnTop = 20 * scale;
	//    GUI.skin.button.fontSize = Convert.ToInt32(16 * scale);
	
	//    if (GUI.Button(new Rect((Screen.width - btnWidth) / 2, btnTop, btnWidth, btnHeight), "Authorize"))
	//    {
	
	//        AuthResultEvent evt = new AuthResultEvent(AuthResultHandler);
	//        ShareSDK.authorize(PlatformType.SinaWeibo, evt);
	//    }
	
	//    btnTop += btnHeight + 20 * scale;
	//    if (GUI.Button(new Rect((Screen.width - btnWidth) / 2, btnTop, btnWidth, btnHeight), "Get User Info"))
	//    {
	//        GetUserInfoResultEvent evt = new GetUserInfoResultEvent(GetUserInfoResultHandler);
	//        ShareSDK.getUserInfo(PlatformType.SinaWeibo, evt);
	//    }
	
	//    btnTop += btnHeight + 20 * scale;
	//    if (GUI.Button(new Rect((Screen.width - btnWidth) / 2, btnTop, btnWidth, btnHeight), "Show Share Menu"))
	//    {
	//        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://www.mob.com";
	//        content["type"] = Convert.ToString((int)ContentType.News);
	//        content["siteUrl"] = "http://www.mob.com";
	//        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);
	//    }
	
	//    btnTop += btnHeight + 20 * scale;
	//    if (GUI.Button(new Rect((Screen.width - btnWidth) / 2, btnTop, btnWidth, btnHeight), "Show Share View"))
	//    {
	//        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://www.mob.com";
	//        content["type"] = Convert.ToString((int)ContentType.News);
	//        content["siteUrl"] = "http://www.mob.com";
	//        content["site"] = "ShareSDK";
	//        content["musicUrl"] = "http://mp3.mwap8.com/destdir/Music/2009/20090601/ZuiXuanMinZuFeng20090601119.mp3";
	
	//        ShareSDK.customSinaWeiboShareContent(content, "sina weibo test string", InheritedValue.VALUE, null);
	
	//        ShareResultEvent evt = new ShareResultEvent(ShareResultHandler);
	//        ShareSDK.showShareView (PlatformType.Any, content, evt);
	//    }
	
	//    btnTop += btnHeight + 20 * scale;
	//    if (GUI.Button(new Rect((Screen.width - btnWidth) / 2, btnTop, btnWidth, btnHeight), "Share Content"))
	//    {
	//        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://www.mob.com";
	//        content["type"] = Convert.ToString((int)ContentType.News);
	//        content["siteUrl"] = "http://www.mob.com";
	//        content["site"] = "ShareSDK";
	//        content["musicUrl"] = "http://mp3.mwap8.com/destdir/Music/2009/20090601/ZuiXuanMinZuFeng20090601119.mp3";
	
	//        ShareResultEvent evt = new ShareResultEvent(ShareResultHandler);
	//        ShareSDK.shareContent (PlatformType.SinaWeibo, content, evt);
	//    }
	
	
	//    btnTop += btnHeight + 20 * scale;
	//    if (GUI.Button(new Rect((Screen.width - btnWidth) / 2, btnTop, btnWidth, btnHeight), "Get Friends SinaWeibo "))
	//    {
	//        GetFriendsResultEvent evt = new GetFriendsResultEvent(GetFriendsResultHandler);
	//        ShareSDK.getFriends (PlatformType.SinaWeibo, null, evt);
	//    }
	
	//    btnTop += btnHeight + 20 * scale;
	//    if (GUI.Button(new Rect((Screen.width - btnWidth) / 2, btnTop, btnWidth, btnHeight), "Get Token SinaWeibo "))
	//    {
	//        GetCredentialResultEvent evt = new GetCredentialResultEvent(GetTokenResultHandler);
	//        ShareSDK.getCredential (PlatformType.SinaWeibo, evt);
	//    }
	
	
	//}
	
	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"]);
		}
		else if (state == ResponseState.Cancel) 
		{
			print ("cancel !");
		}
	}
	
	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"]);
		}
		else if (state == ResponseState.Cancel) 
		{
			print ("cancel !");
		}
	}
	
	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"]);
		}
		else if (state == ResponseState.Cancel) 
		{
			print ("cancel !");
		}
	}
	
	void GetFriendsResultHandler (ResponseState state, PlatformType type, ArrayList friends, Hashtable error)
	{
		if (state == ResponseState.Success)
		{
			print ("share result :");
			print (MiniJSON.jsonEncode(friends));
		}
		else if (state == ResponseState.Fail)
		{
			print ("fail! error code = " + error["error_code"] + "; error msg = " + error["error_msg"]);
		}
		else if (state == ResponseState.Cancel) 
		{
			print ("cancel !");
		}
	}
	
	void GetTokenResultHandler (ResponseState state, PlatformType type, Hashtable credential, Hashtable error)
	{
		if (state == ResponseState.Success)
		{
			print ("share result :");
			print (MiniJSON.jsonEncode(credential));
		}
		else if (state == ResponseState.Fail)
		{
			print ("fail! error code = " + error["error_code"] + "; error msg = " + error["error_msg"]);
		}
		else if (state == ResponseState.Cancel) 
		{
			print ("cancel !");
		}
	}
}

脚本中关于各方法的含义作用,请读者参考Mob官方关于Unity3d快速集成指南的解释说明吧。关于Mob社会化分享在ios平台成功实现的重点是在转换到Xcode项目中,进一步设置修改那块儿。按照官方集成文档步骤设置修改还是有缺陷不够具体的地方。
   注意1:关于那些集成的分享渠道的各自的AppKey也需要各位去相应的新浪微博、微信开发平台、腾讯开放平台注册申请的;新浪微博需要设置其回调页,否则可能会在后面导致回调不成功。
  注意2:如果在后面iOS真机测试时,发现分享的内容乱码的话,你需要将Demo.cs文件在windows系统记事本打开并保存为utf-8格式。




在我的项目中,主要集成了新浪微博、微信系列以及QQ和空间。因此按照集成文档所说的,可以根据我们需要的分享渠道情况,进行相应的添加或删除!( 值得提醒的是,新浪微博会自动识别,这里无须定义其宏定义和引入其相应的头文件和引用

我项目中该文件进行修改之后,如下供参考:
//
//  ShareSDKUnity3DBridge.m
//  Unity-iPhone
//
//  Created by 冯 鸿杰 on 14-2-14.
//
//

#import "ShareSDKUnity3DBridge.h"
#import <ShareSDK/ShareSDK.h>
#import <SHareSDK/ShareSDK+Utils.h>
#import <AGCommon/CMRegexKitLite.h>
#import <AGCommon/UIDevice+Common.h>

#define INHERITED_VALUE_STR @"{inherited}"

#define __SHARESDK_WECHAT__
//#define __SHARESDK_YIXIN__
//#define __SHARESDK_PINTEREST__
//#define __SHARESDK_GOOGLEPLUS__
#define __SHARESDK_QQ__
//#define __SHARESDK_RENREN__
//#define __SHARESDK_TENCENT_WEIBO__

#ifdef __SHARESDK_WECHAT__
#import "WXApi.h"
#endif

//#ifdef __SHARESDK_YIXIN__
//#import "YXApi.h"
//#endif
//
//#ifdef __SHARESDK_PINTEREST__
//#import <Pinterest/Pinterest.h>
//#endif
//
//#ifdef __SHARESDK_GOOGLEPLUS__
//#import <GoogleOpenSource/GoogleOpenSource.h>
//#import <GooglePlus/GooglePlus.h>
//#endif

#ifdef __SHARESDK_QQ__
#import <TencentOpenAPI/TencentOAuth.h>
#import <TencentOpenAPI/QQApiInterface.h>
#endif

//#ifdef __SHARESDK_RENREN__
//#import <RennSDK/RennSDK.h>
//#endif
//
//#ifdef __SHARESDK_TENCENT_WEIBO__
//#import "WeiboApi.h"
//#endif

static UIView *_refView = nil;

#if defined (__cplusplus)
extern "C" {
#endif
    
    /**
     *	@brief	初始化ShareSDK
     *
     *	@param 	appKey 	应用Key
     */
    extern void __iosShareSDKOpen(void *appKey);

    /**
     *	@brief	初始化社交平台
     *
     *	@param 	platType 	平台类型
     *	@param 	contigInfo 	配置信息
     */
    extern void __iosShareSDKSetPlatformConfig(int platType, void *configInfo);

    /**
     *	@brief	用户授权
     *
     *	@param 	platType 	平台类型
     *  @param  observer    观察回调对象名称
     */
    extern void __iosShareSDKAuthorize (int platType, void *observer);

    /**
     *	@brief	取消用户授权
     *
     *	@param 	platType 	平台类型
     */
    extern void __iosShareSDKCancelAuthorize (int platType);

    /**
     *	@brief	判断用户是否授权
     *
     *	@param 	platType 	平台类型
     *
     *	@return	YES 表示已经授权,NO 表示尚未授权
     */
    extern bool __iosShareSDKHasAuthorized (int platType);
    
    /**
     *	@brief	检测是否安装客户端
     *
     *	@param 	platType 	平台类型
     *
     *	@return	YES 表示已经安装,NO 表示尚未安装
     */
    extern bool __iosShareSDKIsClientInstalled (int platType);
    
    /**
     *	@brief	获取用户信息
     *
     *	@param 	platType 	平台类型
     *  @param  observer    观察回调对象名称
     */
    extern void __iosShareSDKGetUserInfo (int platType, void *observer);
    
    /**
     *	@brief	分享内容
     *
     *	@param 	platType 	平台类型
     *	@param 	content 	分享内容
     *  @param  observer    观察回调对象名称
     */
    extern void __iosShareSDKShare (int platType, void *content, void *observer);

    /**
     *	@brief	一键分享内容
     *
     *	@param 	platTypes 	平台类型列表
     *	@param 	content 	分享内容
     *  @param  observer    观察回调对象名称
     */
    extern void __iosShareSDKOneKeyShare (void *platTypes, void *content, void *observer);
    
    /**
     *	@brief	显示分享菜单
     *
     *	@param 	platTypes 	平台类型列表
     *	@param 	content 	分享内容
     *	@param 	x 	弹出菜单的箭头的横坐标,仅用于iPad
     *	@param 	y 	弹出菜单的箭头的纵坐标,仅用于iPad
     *	@param 	direction 	菜单箭头方向,仅用于iPad
     *  @param  observer    观察回调对象名称
     */
    extern void __iosShareSDKShowShareMenu (void *platTypes, void *content, int x, int y, int direction, void *observer);

    /**
     *	@brief	显示分享编辑界面
     *
     *	@param 	platType 	平台类型
     *	@param 	content 	分享内容
     *  @param  observer    观察回调对象名称
     */
    extern void __iosShareSDKShowShareView (int platType, void *content, void *observer);
    
    /**
     *	@brief	获取授权用户好友列表
     *
     *	@param 	platType 	平台类型
     *  @param  observer    观察回调对象名称
     */
    extern void __iosShareSDKGetFriendsList (int platType, void *page, void *observer);
    
    /**
     *	@brief	获取授权信息
     *
     *	@param 	platType 	平台类型
     *  @param  observer    观察回调对象名称
     */
    extern void __iosShareSDKGetCredential (int platType, void *observer);
    
#if defined (__cplusplus)
}
#endif

#if defined (__cplusplus)
extern "C" {
#endif
    
    /**
     *  解析字符串字段
     *
     *  @param value 字段值
     *
     *  @return 字符串
     */
    NSString* __parseStringField(id value)
    {
        if ([value isKindOfClass:[NSString class]])
        {
            if ([value isEqualToString:INHERITED_VALUE_STR])
            {
                return INHERIT_VALUE;
            }
            else
            {
                return value;
            }
        }
        
        return nil;
    }
    
    /**
     *  解析数值字段
     *
     *  @param value 字段值
     *
     *  @return 数值
     */
    NSNumber* __parseNumberField(id value)
    {
        if ([value isKindOfClass:[NSString class]])
        {
            if ([value isEqualToString:INHERITED_VALUE_STR])
            {
                return INHERIT_VALUE;
            }
        }
        else if ([value isKindOfClass:[NSNumber class]])
        {
            return value;
        }
        
        return nil;
    }
    
    /**
     *  解析图片字段
     *
     *  @param value 字段值
     *
     *  @return 图片附件
     */
    id<ISSCAttachment> __parseImageField(id value)
    {
        if ([value isKindOfClass:[NSString class]])
        {
            if ([value isEqualToString:INHERITED_VALUE_STR])
            {
                return INHERIT_VALUE;
            }
            
            if ([value isMatchedByRegex:@"\\w://.*"])
            {
                return [ShareSDK imageWithUrl:value];
            }
            else
            {
                return [ShareSDK imageWithPath:value];
            }
        }
        else if ([value isKindOfClass:[NSDictionary class]])
        {
            NSString *path = [value objectForKey:@"path"];
            NSString *ext = [value objectForKey:@"type"];
            
            NSString *imagePath = [[NSBundle mainBundle] pathForResource:path ofType:ext];
            if (imagePath)
            {
                return [ShareSDK imageWithPath:imagePath];
            }
        }
        
        return nil;
    }
    
    /**
     *  解析资源列表数据
     *
     *  @param value 字段值
     *
     *  @return 资源数组
     */
    NSArray* __parseResourcesField(id value)
    {
        if ([value isKindOfClass:[NSString class]])
        {
            if ([value isEqualToString:INHERITED_VALUE_STR])
            {
                return INHERIT_VALUE;
            }
        }
        else if ([value isKindOfClass:[NSArray class]])
        {
            NSMutableArray *resources = [NSMutableArray array];
            for (int i = 0; i < [value count]; i++)
            {
                id<ISSCAttachment> attach = __parseImageField (value [i]);
                if (attach)
                {
                    [resources addObject:attach];
                }
            }
            
            return resources;
        }
        
        return nil;
    }
    
    /**
     *  解析字符串数组
     *
     *  @param value 字段值
     *
     *  @return 字符串数组
     */
    NSArray* __parseStringsField(id value)
    {
        if ([value isKindOfClass:[NSString class]])
        {
            if ([value isEqualToString:INHERITED_VALUE_STR])
            {
                return INHERIT_VALUE;
            }
        }
        else if ([value isKindOfClass:[NSArray class]])
        {
            NSMutableArray *strings = [NSMutableArray array];
            for (int i = 0; i < [value count]; i++)
            {
                NSString *str = __parseStringField (value [i]);
                if (str)
                {
                    [strings addObject:str];
                }
            }
            
            return strings;
        }
        
        return nil;
    }
    
    /**
     *  解析地理位置信息
     *
     *  @param value 字段值
     *
     *  @return 地理位置信息
     */
    SSCLocationCoordinate2D* __parseLocationField(id value)
    {
        if ([value isKindOfClass:[NSString class]])
        {
            if ([value isEqualToString:INHERITED_VALUE_STR])
            {
                return INHERIT_VALUE;
            }
        }
        else if ([value isKindOfClass:[NSDictionary class]])
        {
            double lat = 0;
            double lng = 0;
            
            id subValue = [value objectForKey:@"lat"];
            if ([subValue isKindOfClass:[NSNumber class]])
            {
                lat = [subValue floatValue];
            }
            subValue = [value objectForKey:@"lng"];
            if ([subValue isKindOfClass:[NSNumber class]])
            {
                lng = [subValue floatValue];
            }
            
            return [SSCLocationCoordinate2D locationCoordinate2DWithLatitude:lat
                                                                   longitude:lng];
        }
        
        return nil;
    }
    
    id<ISSContent> __getContentObjectWithString(NSString *data)
    {
        NSDictionary *contentDict = [ShareSDK jsonObjectWithString:data];
        
        NSLog(@"contentDict = %@", contentDict);
        
        NSString *message = nil;
        id<ISSCAttachment> image = nil;
        NSString *title = nil;
        NSString *url = nil;
        NSString *desc = nil;
        SSPublishContentMediaType type = SSPublishContentMediaTypeText;
        
        if (contentDict)
        {
            if ([[contentDict objectForKey:@"content"] isKindOfClass:[NSString class]])
            {
                message = [contentDict objectForKey:@"content"];
            }
            
            id value = [contentDict objectForKey:@"image"];
            if ([value isKindOfClass:[NSString class]])
            {
                NSString *imagePath = value;
                if ([imagePath isMatchedByRegex:@"\\w://.*"])
                {
                    image = [ShareSDK imageWithUrl:value];
                }
                else
                {
                    image = [ShareSDK imageWithPath:value];
                }
            }
            else if ([value isKindOfClass:[NSDictionary class]])
            {
                NSString *path = [value objectForKey:@"path"];
                NSString *ext = [value objectForKey:@"type"];
                
                NSString *imagePath = [[NSBundle mainBundle] pathForResource:path ofType:ext];
                if (imagePath)
                {
                    image = [ShareSDK imageWithPath:imagePath];
                }
            }
            
            if ([[contentDict objectForKey:@"title"] isKindOfClass:[NSString class]])
            {
                title = [contentDict objectForKey:@"title"];
            }
            if ([[contentDict objectForKey:@"url"] isKindOfClass:[NSString class]])
            {
                url = [contentDict objectForKey:@"url"];
            }
            if ([[contentDict objectForKey:@"description"] isKindOfClass:[NSString class]])
            {
                desc = [contentDict objectForKey:@"description"];
            }
            if ([[contentDict objectForKey:@"type"] isKindOfClass:[NSString class]])
            {
                type = (SSPublishContentMediaType)[[contentDict objectForKey:@"type"] integerValue];
            }
        }
        
        id<ISSContent> contentObj = [ShareSDK content:message
                                       defaultContent:nil
                                                image:image
                                                title:title
                                                  url:url
                                          description:desc
                                            mediaType:type];
        
        if (contentDict)
        {
            NSString *site = nil;
            NSString *siteUrl = nil;
            
            if ([[contentDict objectForKey:@"site"] isKindOfClass:[NSString class]])
            {
                site = [contentDict objectForKey:@"site"];
            }
            
            if ([[contentDict objectForKey:@"siteUrl"] isKindOfClass:[NSString class]])
            {
                siteUrl = [contentDict objectForKey:@"siteUrl"];
            }
            
            if (site || siteUrl)
            {
                if ([ShareSDK getClientWithType:ShareTypeQQSpace])
                {
                    [contentObj addQQSpaceUnitWithTitle:INHERIT_VALUE
                                                    url:INHERIT_VALUE
                                                   site:site
                                                fromUrl:siteUrl
                                                comment:INHERIT_VALUE
                                                summary:INHERIT_VALUE
                                                  image:INHERIT_VALUE
                                                   type:INHERIT_VALUE
                                                playUrl:INHERIT_VALUE
                                                   nswb:INHERIT_VALUE];
                }
            }
            
            
            NSString *extInfo = nil;
            NSString *musicUrl = nil;
            
            if ([[contentDict objectForKey:@"extInfo"] isKindOfClass:[NSString class]])
            {
                extInfo = [contentDict objectForKey:@"extInfo"];
            }
            
            if ([[contentDict objectForKey:@"musicUrl"] isKindOfClass:[NSString class]])
            {
                musicUrl = [contentDict objectForKey:@"musicUrl"];
            }
            
            if (extInfo || musicUrl)
            {
                if ([ShareSDK getClientWithType:ShareTypeWeixiSession])
                {
                    [contentObj addWeixinSessionUnitWithType:INHERIT_VALUE
                                                     content:INHERIT_VALUE
                                                       title:INHERIT_VALUE
                                                         url:INHERIT_VALUE
                                                       image:INHERIT_VALUE
                                                musicFileUrl:musicUrl
                                                     extInfo:extInfo
                                                    fileData:INHERIT_VALUE
                                                emoticonData:INHERIT_VALUE];
                }
                
                if ([ShareSDK getClientWithType:ShareTypeWeixiTimeline])
                {
                    [contentObj addWeixinTimelineUnitWithType:INHERIT_VALUE
                                                      content:INHERIT_VALUE
                                                        title:INHERIT_VALUE
                                                          url:INHERIT_VALUE
                                                        image:INHERIT_VALUE
                                                 musicFileUrl:musicUrl
                                                      extInfo:extInfo
                                                     fileData:INHERIT_VALUE
                                                 emoticonData:INHERIT_VALUE];
                }
                
                if ([ShareSDK getClientWithType:ShareTypeWeixiFav])
                {
                    [contentObj addWeixinFavUnitWithType:INHERIT_VALUE
                                                 content:INHERIT_VALUE
                                                   title:INHERIT_VALUE
                                                     url:INHERIT_VALUE
                                              thumbImage:INHERIT_VALUE
                                                   image:INHERIT_VALUE
                                            musicFileUrl:musicUrl
                                                 extInfo:extInfo
                                                fileData:INHERIT_VALUE
                                            emoticonData:INHERIT_VALUE];
                }
            }
        }
        
        //平台自定义内容
        if (contentDict)
        {
            //新浪微博
            id value = [contentDict objectForKey:@"SinaWeibo"];
            if ([value isKindOfClass:[NSDictionary class]])
            {
                NSString *message = __parseStringField([value objectForKey:@"message"]);
                id<ISSCAttachment> image = __parseImageField ([value objectForKey:@"image"]);
                SSCLocationCoordinate2D *location = __parseLocationField([value objectForKey:@"location"]);

                if ([ShareSDK getClientWithType:ShareTypeSinaWeibo])
                {
                    [contentObj addSinaWeiboUnitWithContent:message
                                                      image:image
                                         locationCoordinate:location];
                }
            }
            
            //腾讯微博
            value  = [contentDict objectForKey:@"TencentWeibo"];
            if ([value isKindOfClass:[NSDictionary class]])
            {
                NSString *message = __parseStringField([value objectForKey:@"message"]);
                id<ISSCAttachment> image = __parseImageField ([value objectForKey:@"image"]);
                SSCLocationCoordinate2D *location = __parseLocationField([value objectForKey:@"location"]);
                
                if ([ShareSDK getClientWithType:ShareTypeTencentWeibo])
                {
                    [contentObj addTencentWeiboUnitWithContent:message
                                                         image:image
                                            locationCoordinate:location];
                }
            }
            
//            //搜狐微博
//            value = [contentDict objectForKey:@"SohuWeibo"];
//            if ([value isKindOfClass:[NSDictionary class]])
//            {
//                NSString *message = __parseStringField([value objectForKey:@"message"]);
//                id<ISSCAttachment> image = __parseImageField ([value objectForKey:@"image"]);
//                
//                if ([ShareSDK getClientWithType:ShareTypeSohuWeibo])
//                {
//                    [contentObj addSohuWeiboUnitWithContent:message
//                                                      image:image];
//                }
//            }
//            
//            //网易微博
//            value = [contentDict objectForKey:@"NetEaseWeibo"];
//            if ([value isKindOfClass:[NSDictionary class]])
//            {
//                NSString *message = __parseStringField([value objectForKey:@"message"]);
//                id<ISSCAttachment> image = __parseImageField ([value objectForKey:@"image"]);
//                
//                if ([ShareSDK getClientWithType:ShareType163Weibo])
//                {
//                    [contentObj add163WeiboUnitWithContent:message image:image];
//                }
//            }
            
            //豆瓣
            value = [contentDict objectForKey:@"DouBan"];
            if ([value isKindOfClass:[NSDictionary class]])
            {
                NSString *message = __parseStringField([value objectForKey:@"message"]);
                id<ISSCAttachment> image = __parseImageField ([value objectForKey:@"image"]);
                
                if ([ShareSDK getClientWithType:ShareTypeDouBan])
                {
                    [contentObj addDouBanWithContent:message image:image];
                }
            }
            
            //QQ空间
            value = [contentDict objectForKey:@"QZone"];
            if ([value isKindOfClass:[NSDictionary class]])
            {
                NSString *title = __parseStringField([value objectForKey:@"title"]);
                NSString *url = __parseStringField([value objectForKey:@"url"]);
                NSString *site = __parseStringField([value objectForKey:@"site"]);
                NSString *fromUrl = __parseStringField([value objectForKey:@"fromUrl"]);
                NSString *comment = __parseStringField([value objectForKey:@"comment"]);
                NSString *summary = __parseStringField([value objectForKey:@"summary"]);
                id<ISSCAttachment> image = __parseImageField ([value objectForKey:@"image"]);
                NSNumber *type = __parseNumberField([value objectForKey:@"type"]);
                NSString *playUrl = __parseStringField([value objectForKey:@"playUrl"]);
                NSNumber *nswb = __parseNumberField([value objectForKey:@"nswb"]);

                if ([ShareSDK getClientWithType:ShareTypeQQSpace])
                {
                    [contentObj addQQSpaceUnitWithTitle:title
                                                    url:url
                                                   site:site
                                                fromUrl:fromUrl
                                                comment:comment
                                                summary:summary
                                                  image:image
                                                   type:type
                                                playUrl:playUrl
                                                   nswb:nswb];
                }
            }
            
            //人人网
            value = [contentDict objectForKey:@"Renren"];
            if ([value isKindOfClass:[NSDictionary class]])
            {
                
                NSString *name = __parseStringField([value objectForKey:@"name"]);
                NSString *description = __parseStringField([value objectForKey:@"description"]);
                NSString *url = __parseStringField([value objectForKey:@"url"]);
                NSString *message = __parseStringField([value objectForKey:@"message"]);
                id<ISSCAttachment> image = __parseImageField ([value objectForKey:@"image"]);
                NSString *caption = __parseStringField([value objectForKey:@"caption"]);
                
                if ([ShareSDK getClientWithType:ShareTypeRenren])
                {
                    [contentObj addRenRenUnitWithName:name
                                          description:description
                                                  url:url
                                              message:message
                                                image:image
                                              caption:caption];
                }
            }
            
            //开心网
            value = [contentDict objectForKey:@"Kaixin"];
            if ([value isKindOfClass:[NSDictionary class]])
            {
                NSString *message = __parseStringField([value objectForKey:@"message"]);
                id<ISSCAttachment> image = __parseImageField ([value objectForKey:@"image"]);

                if ([ShareSDK getClientWithType:ShareTypeKaixin])
                {
                    [contentObj addKaiXinUnitWithContent:message
                                                   image:image];
                }
            }
            
            //Facebook
            value = [contentDict objectForKey:@"Facebook"];
            if ([value isKindOfClass:[NSDictionary class]])
            {
                NSString *message = __parseStringField([value objectForKey:@"message"]);
                id<ISSCAttachment> image = __parseImageField ([value objectForKey:@"image"]);
                
                if ([ShareSDK getClientWithType:ShareTypeFacebook])
                {
                    [contentObj addFacebookWithContent:message
                                                 image:image];
                }
            }
            
            //Twitter
            value = [contentDict objectForKey:@"Twitter"];
            if ([value isKindOfClass:[NSDictionary class]])
            {
                NSString *message = __parseStringField([value objectForKey:@"message"]);
                id<ISSCAttachment> image = __parseImageField ([value objectForKey:@"image"]);
                SSCLocationCoordinate2D *location = __parseLocationField([value objectForKey:@"location"]);
                
                if ([ShareSDK getClientWithType:ShareTypeTwitter])
                {
                    [contentObj addTwitterWithContent:message
                                                image:image
                                   locationCoordinate:location];
                }
            }
            
            //Evernote
            value = [contentDict objectForKey:@"Evernote"];
            if ([value isKindOfClass:[NSDictionary class]])
            {
                NSString *message = __parseStringField([value objectForKey:@"message"]);
                NSString *title = __parseStringField([value objectForKey:@"title"]);
                NSArray *resources = __parseResourcesField([value objectForKey:@"resources"]);
                NSString *notebookGuid = __parseStringField([value objectForKey:@"notebookGuid"]);
                NSString *tagsGuid = __parseStringField([value objectForKey:@"tagsGuid"]);
                
                if ([ShareSDK getClientWithType:ShareTypeEvernote])
                {
                    [contentObj addEvernoteUnitWithContent:message
                                                     title:title
                                                 resources:resources
                                              notebookGuid:notebookGuid
                                                  tagsGuid:tagsGuid];
                }
            }
            
            //GooglePlus
            value = [contentDict objectForKey:@"GooglePlus"];
            if ([value isKindOfClass:[NSDictionary class]])
            {
                NSString *message = __parseStringField([value objectForKey:@"message"]);
                id<ISSCAttachment> image = __parseImageField([value objectForKey:@"image"]);
                NSString *url = __parseStringField([value objectForKey:@"url"]);
                NSString *deepLinkId = __parseStringField([value objectForKey:@"deepLinkId"]);
                NSString *title = __parseStringField([value objectForKey:@"title"]);
                NSArray *resources = __parseResourcesField([value objectForKey:@"resources"]);
                NSString *description = __parseStringField([value objectForKey:@"description"]);
                NSString *thumbnail = __parseStringField([value objectForKey:@"thumbnail"]);
                
                if ([ShareSDK getClientWithType:ShareTypeGooglePlus])
                {
                    [contentObj addGooglePlusUnitWithText:message
                                                    image:image
                                                      url:url
                                               deepLinkId:deepLinkId
                                                    title:title
                                              description:description
                                                thumbnail:thumbnail];
                }
            }
            
            //Instagram
            value = [contentDict objectForKey:@"Instagram"];
            if ([value isKindOfClass:[NSDictionary class]])
            {
                NSString *message = __parseStringField([value objectForKey:@"message"]);
                id<ISSCAttachment> image = __parseImageField ([value objectForKey:@"image"]);
                
                if ([ShareSDK getClientWithType:ShareTypeInstagram])
                {
                    [contentObj addInstagramUnitWithTitle:message
                                                    image:image];
                }
            }
            
            //LinkedIn
            value = [contentDict objectForKey:@"LinkedIn"];
            if ([value isKindOfClass:[NSDictionary class]])
            {
                NSString *comment = __parseStringField([value objectForKey:@"comment"]);
                NSString *title = __parseStringField([value objectForKey:@"title"]);
                NSString *description = __parseStringField([value objectForKey:@"description"]);
                NSString *url = __parseStringField([value objectForKey:@"url"]);
                id<ISSCAttachment> image = __parseImageField ([value objectForKey:@"image"]);
                NSString *visibility = __parseStringField([value objectForKey:@"visibility"]);

                if ([ShareSDK getClientWithType:ShareTypeLinkedIn])
                {
                    [contentObj addLinkedInUnitWithComment:comment
                                                     title:title
                                               description:description
                                                       url:url
                                                     image:image
                                                visibility:visibility];
                }
            }
            
            //Tumblr
            value = [contentDict objectForKey:@"Tumblr"];
            if ([value isKindOfClass:[NSDictionary class]])
            {
                NSString *text = __parseStringField([value objectForKey:@"text"]);
                NSString *title = __parseStringField([value objectForKey:@"title"]);
                NSString *blogName = __parseStringField([value objectForKey:@"blogName"]);
                NSString *url = __parseStringField([value objectForKey:@"url"]);
                id<ISSCAttachment> image = __parseImageField ([value objectForKey:@"image"]);
                
                if ([ShareSDK getClientWithType:ShareTypeTumblr])
                {
                    [contentObj addTumblrUnitWithText:text
                                                title:title
                                                image:image
                                                  url:url
                                             blogName:blogName];
                }
            }
            
            //邮件
            value = [contentDict objectForKey:@"Mail"];
            if ([value isKindOfClass:[NSDictionary class]])
            {
                NSString *subject = __parseStringField([value objectForKey:@"subject"]);
                NSString *message = __parseStringField([value objectForKey:@"message"]);
                NSNumber *isHTML = __parseNumberField([value objectForKey:@"isHTML"]);
                NSArray *attachments = __parseResourcesField([value objectForKey:@"attachments"]);
                NSArray *to = __parseStringsField([value objectForKey:@"to"]);
                NSArray *cc = __parseStringsField([value objectForKey:@"cc"]);
                NSArray *bcc = __parseStringsField([value objectForKey:@"bcc"]);

                if ([ShareSDK getClientWithType:ShareTypeMail])
                {
                    [contentObj addMailUnitWithSubject:subject
                                               content:message
                                                isHTML:isHTML
                                           attachments:attachments
                                                    to:to
                                                    cc:cc
                                                   bcc:bcc];
                }
            }
            
            //短信
            value = [contentDict objectForKey:@"SMS"];
            if ([value isKindOfClass:[NSDictionary class]])
            {
                NSString *message = __parseStringField([value objectForKey:@"message"]);
                
                if ([ShareSDK getClientWithType:ShareTypeSMS])
                {
                    [contentObj addSMSUnitWithContent:message];
                }
            }
            
            //打印
            value = [contentDict objectForKey:@"Print"];
            if ([value isKindOfClass:[NSDictionary class]])
            {
                NSString *message = __parseStringField([value objectForKey:@"message"]);
                id<ISSCAttachment> image = __parseImageField ([value objectForKey:@"image"]);

                if ([ShareSDK getClientWithType:ShareTypeAirPrint])
                {
                    [contentObj addAirPrintWithContent:message
                                                 image:image];
                }
            }
            
            //拷贝
            value = [contentDict objectForKey:@"Copy"];
            if ([value isKindOfClass:[NSDictionary class]])
            {
                NSString *message = __parseStringField([value objectForKey:@"message"]);
                id<ISSCAttachment> image = __parseImageField ([value objectForKey:@"image"]);
                
                if ([ShareSDK getClientWithType:ShareTypeCopy])
                {
                    [contentObj addCopyUnitWithContent:message
                                                 image:image];
                }
            }
            
            //微信好友
            value = [contentDict objectForKey:@"WeChatSession"];
            if ([value isKindOfClass:[NSDictionary class]])
            {
                NSNumber *type = __parseNumberField([value objectForKey:@"type"]);
                NSString *message = __parseStringField([value objectForKey:@"message"]);
                NSString *title = __parseStringField([value objectForKey:@"title"]);
                NSString *url = __parseStringField([value objectForKey:@"url"]);
                id<ISSCAttachment> thumbImage = __parseImageField ([value objectForKey:@"thumbImage"]);
                id<ISSCAttachment> image = __parseImageField ([value objectForKey:@"image"]);
                NSString *musicFileUrl = __parseStringField([value objectForKey:@"musicFileUrl"]);
                NSString *extInfo = __parseStringField([value objectForKey:@"extInfo"]);
                
                NSString *fileDataStr = __parseStringField([value objectForKey:@"fileData"]);
                NSData *fileData = nil;
                if (fileDataStr)
                {
                    fileData = [NSData dataWithContentsOfFile:fileDataStr];
                }
                
                NSString *emoticonDataStr = __parseStringField([value objectForKey:@"emoticonData"]);
                NSData *emoticonData = nil;
                if (emoticonDataStr)
                {
                    emoticonData = [NSData dataWithContentsOfFile:emoticonDataStr];
                }
                
                if ([ShareSDK getClientWithType:ShareTypeWeixiSession])
                {
                    [contentObj addWeixinSessionUnitWithType:type
                                                     content:message
                                                       title:title
                                                         url:url
                                                  thumbImage:thumbImage
                                                       image:image
                                                musicFileUrl:musicFileUrl
                                                     extInfo:extInfo
                                                    fileData:fileData
                                                emoticonData:emoticonData];
                }
            }
            
            //微信朋友圈
            value = [contentDict objectForKey:@"WeChatTimeline"];
            if ([value isKindOfClass:[NSDictionary class]])
            {
                NSNumber *type = __parseNumberField([value objectForKey:@"type"]);
                NSString *message = __parseStringField([value objectForKey:@"message"]);
                NSString *title = __parseStringField([value objectForKey:@"title"]);
                NSString *url = __parseStringField([value objectForKey:@"url"]);
                id<ISSCAttachment> thumbImage = __parseImageField ([value objectForKey:@"thumbImage"]);
                id<ISSCAttachment> image = __parseImageField ([value objectForKey:@"image"]);
                NSString *musicFileUrl = __parseStringField([value objectForKey:@"musicFileUrl"]);
                NSString *extInfo = __parseStringField([value objectForKey:@"extInfo"]);
                
                NSString *fileDataStr = __parseStringField([value objectForKey:@"fileData"]);
                NSData *fileData = nil;
                if (fileDataStr)
                {
                    fileData = [NSData dataWithContentsOfFile:fileDataStr];
                }
                
                NSString *emoticonDataStr = __parseStringField([value objectForKey:@"emoticonData"]);
                NSData *emoticonData = nil;
                if (emoticonDataStr)
                {
                    emoticonData = [NSData dataWithContentsOfFile:emoticonDataStr];
                }
                
                if ([ShareSDK getClientWithType:ShareTypeWeixiTimeline])
                {
                    [contentObj addWeixinTimelineUnitWithType:type
                                                      content:message
                                                        title:title
                                                          url:url
                                                   thumbImage:thumbImage
                                                        image:image
                                                 musicFileUrl:musicFileUrl
                                                      extInfo:extInfo
                                                     fileData:fileData
                                                 emoticonData:emoticonData];
                }
            }
            
            //QQ
            value = [contentDict objectForKey:@"QQ"];
            if ([value isKindOfClass:[NSDictionary class]])
            {
                NSNumber *type = __parseNumberField([value objectForKey:@"type"]);
                NSString *message = __parseStringField([value objectForKey:@"message"]);
                NSString *title = __parseStringField([value objectForKey:@"title"]);
                NSString *url = __parseStringField([value objectForKey:@"url"]);
                id<ISSCAttachment> image = __parseImageField ([value objectForKey:@"image"]);

                if ([ShareSDK getClientWithType:ShareTypeQQ])
                {
                    [contentObj addQQUnitWithType:type
                                          content:message
                                            title:title
                                              url:url
                                            image:image];
                }
            }
            
            //Instapaper
            value = [contentDict objectForKey:@"Instapaper"];
            if ([value isKindOfClass:[NSDictionary class]])
            {
                NSString *url = __parseStringField([value objectForKey:@"url"]);
                NSString *title = __parseStringField([value objectForKey:@"title"]);
                NSString *description = __parseStringField([value objectForKey:@"description"]);
                
                if ([ShareSDK getClientWithType:ShareTypeInstapaper])
                {
                    [contentObj addInstapaperContentWithUrl:url
                                                      title:title
                                                description:description];
                }
            }
            
            //Pocket
            value = [contentDict objectForKey:@"Pocket"];
            if ([value isKindOfClass:[NSDictionary class]])
            {
                NSString *url = __parseStringField([value objectForKey:@"url"]);
                NSString *title = __parseStringField([value objectForKey:@"title"]);
                NSString *tags = __parseStringField([value objectForKey:@"tags"]);
                NSString *tweetId = __parseStringField([value objectForKey:@"tweetId"]);
                
                if ([ShareSDK getClientWithType:ShareTypeInstapaper])
                {
                    [contentObj addPocketUnitWithUrl:url
                                               title:title
                                                tags:tags
                                             tweetId:tweetId];
                }
            }
            
            //有道云笔记
            value = [contentDict objectForKey:@"YouDaoNote"];
            if ([value isKindOfClass:[NSDictionary class]])
            {
                NSString *message = __parseStringField([value objectForKey:@"message"]);
                NSString *title = __parseStringField([value objectForKey:@"title"]);
                NSString *author = __parseStringField([value objectForKey:@"author"]);
                NSString *source = __parseStringField([value objectForKey:@"source"]);
                NSArray *attachments = __parseResourcesField([value objectForKey:@"attachments"]);
                
                if ([ShareSDK getClientWithType:ShareTypeYouDaoNote])
                {
                    [contentObj addYouDaoNoteUnitWithContent:message
                                                       title:title
                                                      author:author
                                                      source:source
                                                 attachments:attachments];
                }
            }
            
            //搜狐随身看
            value = [contentDict objectForKey:@"SohuKan"];
            if ([value isKindOfClass:[NSDictionary class]])
            {
                NSString *url = __parseStringField([value objectForKey:@"url"]);
                
                if ([ShareSDK getClientWithType:ShareTypeSohuKan])
                {
                    [contentObj addSohuKanUnitWithUrl:url];
                }
            }
            
            //Pinterest
            value = [contentDict objectForKey:@"Pinterest"];
            if ([value isKindOfClass:[NSDictionary class]])
            {
                id<ISSCAttachment> image = __parseImageField([value objectForKey:@"image"]);
                NSString *url = __parseStringField([value objectForKey:@"url"]);
                NSString *description = __parseStringField([value objectForKey:@"description"]);
                
                if ([ShareSDK getClientWithType:ShareTypePinterest])
                {
                    [contentObj addPinterestUnitWithImage:image
                                                      url:url
                                              description:description];
                }
            }
            
            //Flickr
            value = [contentDict objectForKey:@"Flickr"];
            if ([value isKindOfClass:[NSDictionary class]])
            {
                id<ISSCAttachment> photo = __parseImageField([value objectForKey:@"photo"]);
                NSString *title = __parseStringField([value objectForKey:@"title"]);
                NSString *description = __parseStringField([value objectForKey:@"description"]);
                NSString *tags = __parseStringField([value objectForKey:@"tags"]);
                
                NSNumber *isPublic = __parseNumberField([value objectForKey:@"isPublic"]);
                NSNumber *isFriend = __parseNumberField([value objectForKey:@"isFriend"]);
                NSNumber *isFamily = __parseNumberField([value objectForKey:@"isFamily"]);
                NSNumber *safetyLevel = __parseNumberField([value objectForKey:@"safetyLevel"]);
                NSNumber *contentType = __parseNumberField([value objectForKey:@"contentType"]);
                NSNumber *hidden = __parseNumberField([value objectForKey:@"hidden"]);
                
                if ([ShareSDK getClientWithType:ShareTypeFlickr])
                {
                    [contentObj addFlickrUnitWithPhoto:photo
                                                 title:title
                                           description:description
                                                  tags:tags
                                              isPublic:isPublic
                                              isFriend:isFriend
                                              isFamily:isFamily
                                           safetyLevel:safetyLevel
                                           contentType:contentType
                                                hidden:hidden];
                }
            }
            
            //Dropbox
            value = [contentDict objectForKey:@"Dropbox"];
            if ([value isKindOfClass:[NSDictionary class]])
            {
                id<ISSCAttachment> file = __parseImageField([value objectForKey:@"file"]);
                
                if ([ShareSDK getClientWithType:ShareTypeDropbox])
                {
                    [contentObj addDropboxUnitWithFile:file];
                }
            }
            
            //VKontakte
            value = [contentDict objectForKey:@"VKontakte"];
            if ([value isKindOfClass:[NSDictionary class]])
            {
                NSString *message = __parseStringField([value objectForKey:@"message"]);
                NSArray *attachments = __parseResourcesField([value objectForKey:@"attachments"]);
                NSString *url = __parseStringField([value objectForKey:@"url"]);
                NSString *groupId = __parseStringField([value objectForKey:@"groupId"]);
                NSNumber *friendsOnly = __parseNumberField([value objectForKey:@"friendsOnly"]);
                SSCLocationCoordinate2D *location = __parseLocationField([value objectForKey:@"location"]);
                
                if ([ShareSDK getClientWithType:ShareTypeVKontakte])
                {
                    [contentObj addVKontakteUnitWithMessage:message
                                                attachments:attachments
                                                        url:url
                                                    groupId:groupId
                                                friendsOnly:friendsOnly
                                         locationCoordinate:location];
                }
            }
            
            //微信收藏
            value = [contentDict objectForKey:@"WeChatFav"];
            if ([value isKindOfClass:[NSDictionary class]])
            {
                NSNumber *type = __parseNumberField([value objectForKey:@"type"]);
                NSString *message = __parseStringField([value objectForKey:@"message"]);
                NSString *title = __parseStringField([value objectForKey:@"title"]);
                NSString *url = __parseStringField([value objectForKey:@"url"]);
                id<ISSCAttachment> thumbImage = __parseImageField ([value objectForKey:@"thumbImage"]);
                id<ISSCAttachment> image = __parseImageField ([value objectForKey:@"image"]);
                NSString *musicFileUrl = __parseStringField([value objectForKey:@"musicFileUrl"]);
                NSString *extInfo = __parseStringField([value objectForKey:@"extInfo"]);
                
                NSString *fileDataStr = __parseStringField([value objectForKey:@"fileData"]);
                NSData *fileData = nil;
                if (fileDataStr)
                {
                    fileData = [NSData dataWithContentsOfFile:fileDataStr];
                }
                
                NSString *emoticonDataStr = __parseStringField([value objectForKey:@"emoticonData"]);
                NSData *emoticonData = nil;
                if (emoticonDataStr)
                {
                    emoticonData = [NSData dataWithContentsOfFile:emoticonDataStr];
                }
                
                if ([ShareSDK getClientWithType:ShareTypeWeixiFav])
                {
                    [contentObj addWeixinFavUnitWithType:type
                                                 content:message
                                                   title:title
                                                     url:url
                                              thumbImage:thumbImage
                                                   image:image
                                            musicFileUrl:musicFileUrl
                                                 extInfo:extInfo
                                                fileData:fileData
                                            emoticonData:emoticonData];
                }
            }
            
            //易信好友
            value = [contentDict objectForKey:@"YiXinSession"];
            if ([value isKindOfClass:[NSDictionary class]])
            {
                NSNumber *type = __parseNumberField([value objectForKey:@"type"]);
                NSString *message = __parseStringField([value objectForKey:@"message"]);
                NSString *title = __parseStringField([value objectForKey:@"title"]);
                NSString *url = __parseStringField([value objectForKey:@"url"]);
                id<ISSCAttachment> thumbImage = __parseImageField ([value objectForKey:@"thumbImage"]);
                id<ISSCAttachment> image = __parseImageField ([value objectForKey:@"image"]);
                NSString *musicFileUrl = __parseStringField([value objectForKey:@"musicFileUrl"]);
                NSString *extInfo = __parseStringField([value objectForKey:@"extInfo"]);
                
                NSString *fileDataStr = __parseStringField([value objectForKey:@"fileData"]);
                NSData *fileData = nil;
                if (fileDataStr)
                {
                    fileData = [NSData dataWithContentsOfFile:fileDataStr];
                }
                
                if ([ShareSDK getClientWithType:ShareTypeYiXinSession])
                {
                    [contentObj addYiXinSessionUnitWithType:type
                                                    content:message
                                                      title:title
                                                        url:url
                                                 thumbImage:thumbImage
                                                      image:image
                                               musicFileUrl:musicFileUrl
                                                    extInfo:extInfo
                                                   fileData:fileData];
                }
            }
            
            //易信朋友圈
            value = [contentDict objectForKey:@"YiXinTimeline"];
            if ([value isKindOfClass:[NSDictionary class]])
            {
                NSNumber *type = __parseNumberField([value objectForKey:@"type"]);
                NSString *message = __parseStringField([value objectForKey:@"message"]);
                NSString *title = __parseStringField([value objectForKey:@"title"]);
                NSString *url = __parseStringField([value objectForKey:@"url"]);
                id<ISSCAttachment> thumbImage = __parseImageField ([value objectForKey:@"thumbImage"]);
                id<ISSCAttachment> image = __parseImageField ([value objectForKey:@"image"]);
                NSString *musicFileUrl = __parseStringField([value objectForKey:@"musicFileUrl"]);
                NSString *extInfo = __parseStringField([value objectForKey:@"extInfo"]);
                
                NSString *fileDataStr = __parseStringField([value objectForKey:@"fileData"]);
                NSData *fileData = nil;
                if (fileDataStr)
                {
                    fileData = [NSData dataWithContentsOfFile:fileDataStr];
                }
                
                if ([ShareSDK getClientWithType:ShareTypeYiXinTimeline])
                {
                    [contentObj addYiXinTimelineUnitWithType:type
                                                     content:message
                                                       title:title
                                                         url:url
                                                  thumbImage:thumbImage
                                                       image:image
                                                musicFileUrl:musicFileUrl
                                                     extInfo:extInfo
                                                    fileData:fileData];
                }
            }
            
            //明道
            value = [contentDict objectForKey:@"MingDao"];
            if ([value isKindOfClass:[NSDictionary class]])
            {
                NSString *message = __parseStringField([value objectForKey:@"message"]);
                NSString *title = __parseStringField([value objectForKey:@"title"]);
                NSString *url = __parseStringField([value objectForKey:@"url"]);
                id<ISSCAttachment> image = __parseImageField ([value objectForKey:@"image"]);
                
                if ([ShareSDK getClientWithType:ShareTypeMingDao])
                {
                    [contentObj addMingDaoUnitWithContent:message
                                                    image:image
                                                    title:title
                                                      url:url];
                }
            }
            
            //Line
            value = [contentDict objectForKey:@"Line"];
            if ([value isKindOfClass:[NSDictionary class]])
            {
                NSString *message = __parseStringField([value objectForKey:@"message"]);
                id<ISSCAttachment> image = __parseImageField ([value objectForKey:@"image"]);
                
                if ([ShareSDK getClientWithType:ShareTypeLine])
                {
                    [contentObj addLineUnitWithContent:message
                                                 image:image];
                }
            }
            
            //WhatsApp
            value = [contentDict objectForKey:@"WhatsApp"];
            if ([value isKindOfClass:[NSDictionary class]])
            {
                NSString *message = __parseStringField([value objectForKey:@"message"]);
                id<ISSCAttachment> image = __parseImageField ([value objectForKey:@"image"]);
                id<ISSCAttachment> music = __parseImageField ([value objectForKey:@"music"]);
                id<ISSCAttachment> video = __parseImageField ([value objectForKey:@"video"]);
                
                if ([ShareSDK getClientWithType:ShareTypeWhatsApp])
                {
                    [contentObj addWhatsAppUnitWithContent:message
                                                     image:image
                                                     music:music
                                                     video:video];
                }
            }
        }
        //平台自定义内容 结束
        
        return contentObj;
    }
    
    
    void __iosShareSDKOpen(void *appKey)
    {
        NSString *appKeyStr = [NSString stringWithCString:appKey encoding:NSUTF8StringEncoding];
        [ShareSDK registerApp:appKeyStr];
        
#ifdef __SHARESDK_WECHAT__
        [ShareSDK importWeChatClass:[WXApi class]];
#endif
        
//#ifdef __SHARESDK_YIXIN__
//        [ShareSDK importYiXinClass:[YXApi class]];
//#endif
//        
//#ifdef __SHARESDK_PINTEREST__
//        [ShareSDK importPinterestClass:[Pinterest class]];
//#endif
//        
//#ifdef __SHARESDK_GOOGLEPLUS__
//        [ShareSDK importGooglePlusClass:[GPPSignIn class] shareClass:[GPPShare class]];
//#endif
        
#ifdef __SHARESDK_QQ__
        [ShareSDK importQQClass:[QQApiInterface class] tencentOAuthCls:[TencentOAuth class]];
#endif
        
//#ifdef __SHARESDK_RENREN__
//        [ShareSDK importRenRenClass:[RennClient class]];
//#endif
//      
//#ifdef __SHARESDK_TENCENT_WEIBO__
//        [ShareSDK importTencentWeiboClass:[WeiboApi class]];
//#endif
    }
    
    void __iosShareSDKSetPlatformConfig(int platType, void *configInfo)
    {
        NSString *configInfoStr = nil;
        if (configInfo)
        {
            configInfoStr = [NSString stringWithCString:configInfo encoding:NSUTF8StringEncoding];
        }
        NSMutableDictionary *configInfoDict = [NSMutableDictionary dictionaryWithDictionary:[ShareSDK jsonObjectWithString:configInfoStr]];
        
        switch (platType)
        {
            case ShareTypeWeixiSession:
            case ShareTypeYiXinSession:
                [configInfoDict setObject:[NSNumber numberWithInt:0] forKey:@"scene"];
                break;
            case ShareTypeWeixiTimeline:
            case ShareTypeYiXinTimeline:
                [configInfoDict setObject:[NSNumber numberWithInt:1] forKey:@"scene"];
                break;
            case ShareTypeWeixiFav:
                [configInfoDict setObject:[NSNumber numberWithInt:2] forKey:@"scene"];
                break;
            default:
                break;
        }
        
        [ShareSDK connectPlatformWithType:platType
                                 platform:nil
                                  appInfo:configInfoDict];
    }
    
    void __iosShareSDKAuthorize (int platType, void *observer)
    {
        NSString *observerStr = nil;
        if (observer)
        {
            observerStr = [NSString stringWithCString:observer encoding:NSUTF8StringEncoding];
        }
        
        [ShareSDK authWithType:platType
                       options:nil
                        result:^(SSAuthState state, id<ICMErrorInfo> error) {
                            
                            NSMutableDictionary *resultDict = [NSMutableDictionary dictionary];
                            [resultDict setObject:[NSNumber numberWithInteger:1] forKey:@"action"];
                            [resultDict setObject:[NSNumber numberWithInteger:state] forKey:@"state"];
                            [resultDict setObject:[NSNumber numberWithInteger:platType] forKey:@"type"];
                            
                            if (state == SSResponseStateFail && error)
                            {
                                NSMutableDictionary *errorDict = [NSMutableDictionary dictionary];
                                [errorDict setObject:[NSNumber numberWithInteger:[error errorCode]] forKey:@"error_code"];
                                if ([error errorDescription])
                                {
                                    [errorDict setObject:[error errorDescription] forKey:@"error_msg"];
                                }
                                [resultDict setObject:errorDict forKey:@"error"];
                            }
                            
                            NSString *resultStr = [ShareSDK jsonStringWithObject:resultDict];
                            UnitySendMessage([observerStr UTF8String], "_callback", [resultStr UTF8String]);
                        }];
    }
    
    void __iosShareSDKCancelAuthorize (int platType)
    {
        [ShareSDK cancelAuthWithType:platType];
    }
    
    bool __iosShareSDKHasAuthorized (int platType)
    {
        return [ShareSDK hasAuthorizedWithType:platType];
    }
    
    bool __iosShareSDKIsClientInstalled (int platType)
    {
        id <ISSPlatformApp> app = [ShareSDK getClientWithType:platType];
        return [app isClientInstalled];
    }
    
    void __iosShareSDKGetUserInfo (int platType, void *observer)
    {
        NSString *observerStr = nil;
        if (observer)
        {
            observerStr = [NSString stringWithCString:observer encoding:NSUTF8StringEncoding];
        }
        
        [ShareSDK getUserInfoWithType:platType
                          authOptions:nil
                               result:^(BOOL result, id<ISSPlatformUser> userInfo, id<ICMErrorInfo> error) {
                                   
                                   NSMutableDictionary *resultDict = [NSMutableDictionary dictionary];
                                   [resultDict setObject:[NSNumber numberWithInteger:2] forKey:@"action"];
                                   [resultDict setObject:[NSNumber numberWithInteger:result ? SSResponseStateSuccess : SSResponseStateFail] forKey:@"state"];
                                   [resultDict setObject:[NSNumber numberWithInteger:platType] forKey:@"type"];
                                   
                                   if (!result && error)
                                   {
                                       NSMutableDictionary *errorDict = [NSMutableDictionary dictionary];
                                       [errorDict setObject:[NSNumber numberWithInteger:[error errorCode]] forKey:@"error_code"];
                                       if ([error errorDescription])
                                       {
                                           [errorDict setObject:[error errorDescription] forKey:@"error_msg"];
                                       }
                                       [resultDict setObject:errorDict forKey:@"error"];
                                   }
                                   else if ([userInfo sourceData])
                                   {
                                       [resultDict setObject:[userInfo sourceData] forKey:@"user"];
                                   }
                                   
                                   NSString *resultStr = [ShareSDK jsonStringWithObject:resultDict];
                                   UnitySendMessage([observerStr UTF8String], "_callback", [resultStr UTF8String]);
                                   
                               }];
    }
    
    void __iosShareSDKShare (int platType, void *content, void *observer)
    {
        NSString *observerStr = nil;
        id<ISSContent> contentObj = nil;
        
        observerStr = [NSString stringWithCString:observer encoding:NSUTF8StringEncoding];
        
        if (content)
        {
            NSString *contentStr = [NSString stringWithCString:content encoding:NSUTF8StringEncoding];
            contentObj = __getContentObjectWithString(contentStr);
        }
        
        [ShareSDK shareContent:contentObj
                          type:platType
                   authOptions:nil
                  shareOptions:nil
                 statusBarTips:NO
                        result:^(ShareType type, SSResponseState state, id<ISSPlatformShareInfo> statusInfo, id<ICMErrorInfo> error, BOOL end) {
                            
                            NSMutableDictionary *resultDict = [NSMutableDictionary dictionary];
                            [resultDict setObject:[NSNumber numberWithInteger:3] forKey:@"action"];
                            [resultDict setObject:[NSNumber numberWithInteger:state] forKey:@"state"];
                            [resultDict setObject:[NSNumber numberWithInteger:platType] forKey:@"type"];
                            [resultDict setObject:[NSNumber numberWithBool:end] forKey:@"end"];
                            
                            if (state == SSResponseStateFail && error)
                            {
                                NSMutableDictionary *errorDict = [NSMutableDictionary dictionary];
                                [errorDict setObject:[NSNumber numberWithInteger:[error errorCode]] forKey:@"error_code"];
                                if ([error errorDescription])
                                {
                                    [errorDict setObject:[error errorDescription] forKey:@"error_msg"];
                                }
                                [resultDict setObject:errorDict forKey:@"error"];
                            }
                            else if ([statusInfo sourceData])
                            {
                                if (type == ShareTypeRenren)
                                {
                                    [resultDict setObject:@{@"postid" : [statusInfo sourceData]}
                                                   forKey:@"share_info"];
                                }
                                else
                                {
                                    [resultDict setObject:[statusInfo sourceData]
                                                   forKey:@"share_info"];
                                }
                            }
                            
                            NSString *resultStr = [ShareSDK jsonStringWithObject:resultDict];
                            UnitySendMessage([observerStr UTF8String], "_callback", [resultStr UTF8String]);
                        }];
    }
    
    void __iosShareSDKOneKeyShare (void *platTypes, void *content, void *observer)
    {
        NSArray *platTypesArr = nil;
        NSString *observerStr = nil;
        id<ISSContent> contentObj = nil;
        
        observerStr = [NSString stringWithCString:observer encoding:NSUTF8StringEncoding];
        
        if (platTypes)
        {
            NSString *platTypesStr = [NSString stringWithCString:platTypes encoding:NSUTF8StringEncoding];
            platTypesArr = [ShareSDK jsonObjectWithString:platTypesStr];
        }
        
        if (content)
        {
            NSString *contentStr = [NSString stringWithCString:content encoding:NSUTF8StringEncoding];
            contentObj = __getContentObjectWithString(contentStr);
        }
        
        [ShareSDK oneKeyShareContent:contentObj
                           shareList:platTypesArr
                         authOptions:nil
                        shareOptions:nil
                       statusBarTips:NO
                              result:^(ShareType type, SSResponseState state, id<ISSPlatformShareInfo> statusInfo, id<ICMErrorInfo> error, BOOL end) {
                                  
                                  NSMutableDictionary *resultDict = [NSMutableDictionary dictionary];
                                  [resultDict setObject:[NSNumber numberWithInteger:3] forKey:@"action"];
                                  [resultDict setObject:[NSNumber numberWithInteger:state] forKey:@"state"];
                                  [resultDict setObject:[NSNumber numberWithInteger:type] forKey:@"type"];
                                  [resultDict setObject:[NSNumber numberWithBool:end] forKey:@"end"];
                                  
                                  if (state == SSResponseStateFail && error)
                                  {
                                      NSMutableDictionary *errorDict = [NSMutableDictionary dictionary];
                                      [errorDict setObject:[NSNumber numberWithInteger:[error errorCode]] forKey:@"error_code"];
                                      if ([error errorDescription])
                                      {
                                          [errorDict setObject:[error errorDescription] forKey:@"error_msg"];
                                      }
                                      [resultDict setObject:errorDict forKey:@"error"];
                                  }
                                  else if ([statusInfo sourceData])
                                  {
                                      if (type == ShareTypeRenren)
                                      {
                                          [resultDict setObject:@{@"postid" : [statusInfo sourceData]}
                                                         forKey:@"share_info"];
                                      }
                                      else
                                      {
                                          [resultDict setObject:[statusInfo sourceData]
                                                         forKey:@"share_info"];
                                      }
                                  }
                                  
                                  NSString *resultStr = [ShareSDK jsonStringWithObject:resultDict];
                                  UnitySendMessage([observerStr UTF8String], "_callback", [resultStr UTF8String]);
                                  
                              }];
    }
    
    void __iosShareSDKShowShareMenu (void *platTypes, void *content, int x, int y, int direction, void *observer)
    {
        NSArray *platTypesArr = nil;
        NSString *observerStr = nil;
        id<ISSContent> contentObj = nil;
        
        observerStr = [NSString stringWithCString:observer encoding:NSUTF8StringEncoding];

        if (platTypes)
        {
            NSString *platTypesStr = [NSString stringWithCString:platTypes encoding:NSUTF8StringEncoding];
            platTypesArr = [ShareSDK jsonObjectWithString:platTypesStr];
        }
        
        if (content)
        {
            NSString *contentStr = [NSString stringWithCString:content encoding:NSUTF8StringEncoding];
            contentObj = __getContentObjectWithString(contentStr);
        }
        
        id<ISSContainer> container = nil;
        if ([UIDevice currentDevice].isPad)
        {
            if (!_refView)
            {
                _refView = [[UIView alloc] initWithFrame:CGRectMake(x, y, 10, 10)];
            }
            
             [[UIApplication sharedApplication].keyWindow.rootViewController.view addSubview:_refView];
            
            container = [ShareSDK container];
            [container setIPadContainerWithView:_refView arrowDirect:direction];
        }
        
        [ShareSDK showShareActionSheet:container
                             shareList:platTypesArr
                               content:contentObj
                         statusBarTips:NO
                           authOptions:nil
                          shareOptions:nil
                                result:^(ShareType type, SSResponseState state, id<ISSPlatformShareInfo> statusInfo, id<ICMErrorInfo> error, BOOL end) {
                                    
                                    NSMutableDictionary *resultDict = [NSMutableDictionary dictionary];
                                    [resultDict setObject:[NSNumber numberWithInteger:3] forKey:@"action"];
                                    [resultDict setObject:[NSNumber numberWithInteger:state] forKey:@"state"];
                                    [resultDict setObject:[NSNumber numberWithInteger:type] forKey:@"type"];
                                    [resultDict setObject:[NSNumber numberWithBool:end] forKey:@"end"];
                                    
                                    if (state == SSResponseStateFail && error)
                                    {
                                        NSMutableDictionary *errorDict = [NSMutableDictionary dictionary];
                                        [errorDict setObject:[NSNumber numberWithInteger:[error errorCode]] forKey:@"error_code"];
                                        if ([error errorDescription])
                                        {
                                            [errorDict setObject:[error errorDescription] forKey:@"error_msg"];
                                        }
                                        [resultDict setObject:errorDict forKey:@"error"];
                                    }
                                    else if ([statusInfo sourceData])
                                    {
                                        if (type == ShareTypeRenren)
                                        {
                                            [resultDict setObject:@{@"postid" : [statusInfo sourceData]}
                                                           forKey:@"share_info"];
                                        }
                                        else
                                        {
                                            [resultDict setObject:[statusInfo sourceData]
                                                           forKey:@"share_info"];
                                        }
                                    }
                                    
                                    NSString *resultStr = [ShareSDK jsonStringWithObject:resultDict];
                                    
                                    NSLog (@"callback = %@", resultStr);
                                    
                                    UnitySendMessage([observerStr UTF8String], "_callback", [resultStr UTF8String]);
                                    
                                    if (_refView)
                                    {
                                        //移除视图
                                        [_refView removeFromSuperview];
                                    }
                                }];
    }
    
    void __iosShareSDKShowShareView (int platType, void *content, void *observer)
    {
        NSString *observerStr = nil;
        id<ISSContent> contentObj = nil;
        
        observerStr = [NSString stringWithCString:observer encoding:NSUTF8StringEncoding];
        
        if (content)
        {
            NSString *contentStr = [NSString stringWithCString:content encoding:NSUTF8StringEncoding];
            contentObj = __getContentObjectWithString(contentStr);
        }
        
        [ShareSDK showShareViewWithType:platType
                              container:nil
                                content:contentObj
                          statusBarTips:NO
                            authOptions:nil
                           shareOptions:nil
                                 result:^(ShareType type, SSResponseState state, id<ISSPlatformShareInfo> statusInfo, id<ICMErrorInfo> error, BOOL end) {
                                     
                                     NSMutableDictionary *resultDict = [NSMutableDictionary dictionary];
                                     [resultDict setObject:[NSNumber numberWithInteger:3] forKey:@"action"];
                                     [resultDict setObject:[NSNumber numberWithInteger:state] forKey:@"state"];
                                     [resultDict setObject:[NSNumber numberWithInteger:type] forKey:@"type"];
                                     [resultDict setObject:[NSNumber numberWithBool:end] forKey:@"end"];
                                     
                                     if (state == SSResponseStateFail && error)
                                     {
                                         NSMutableDictionary *errorDict = [NSMutableDictionary dictionary];
                                         [errorDict setObject:[NSNumber numberWithInteger:[error errorCode]] forKey:@"error_code"];
                                         if ([error errorDescription])
                                         {
                                             [errorDict setObject:[error errorDescription] forKey:@"error_msg"];
                                         }
                                         [resultDict setObject:errorDict forKey:@"error"];
                                     }
                                     else if ([statusInfo sourceData])
                                     {
                                         if (type == ShareTypeRenren)
                                         {
                                             [resultDict setObject:@{@"postid" : [statusInfo sourceData]}
                                                            forKey:@"share_info"];
                                         }
                                         else
                                         {
                                             [resultDict setObject:[statusInfo sourceData]
                                                            forKey:@"share_info"];
                                         }
                                     }
                                     
                                     NSString *resultStr = [ShareSDK jsonStringWithObject:resultDict];
                                     UnitySendMessage([observerStr UTF8String], "_callback", [resultStr UTF8String]);
                                     
                                 }];
    }
    
    
    void __iosShareSDKGetFriendsList (int platType, void *page, void *observer)
    {
        ShareType shareType = (ShareType)platType;
        
        NSString *observerStr = [NSString stringWithCString:observer encoding:NSUTF8StringEncoding];
        
        id<ISSPage> pageInfo = nil;
        if (page)
        {
            NSString *pageStr = [NSString stringWithCString:page encoding:NSUTF8StringEncoding];
            NSDictionary *pageDict = [ShareSDK jsonObjectWithString:pageStr];
            
            if (shareType == ShareTypeTwitter)
            {
                NSInteger cursor = -1;
                id value = [pageDict objectForKey:@"cursor"];
                if ([value isKindOfClass:[NSNumber class]])
                {
                    cursor = [value integerValue];
                }
                pageInfo = [ShareSDK pageWithCursor:cursor];
            }
            else
            {
                NSInteger pageNo = 1;
                NSInteger pageSize = 0;
                
                id value = [pageDict objectForKey:@"pageNo"];
                if ([value isKindOfClass:[NSNumber class]])
                {
                    pageNo = [value integerValue];
                }
                value = [pageDict objectForKey:@"pageSize"];
                if ([value isKindOfClass:[NSNumber class]])
                {
                    pageSize = [value integerValue];
                }
                
                pageInfo = [ShareSDK pageWithPageNo:pageNo pageSize:pageSize];
            }
        }
        else
        {
            if (shareType == ShareTypeTwitter)
            {
                pageInfo = [ShareSDK pageWithCursor:-1];
            }
            else
            {
                pageInfo = [ShareSDK pageWithPageNo:(NSInteger)1 pageSize:0];
            }
        }
        
        
        
        [ShareSDK getFriendsWithType:shareType
                                page:pageInfo
                         authOptions:nil
                              result:^(SSResponseState state, NSArray *users, long long curr, long long prev, long long next, BOOL hasNext, NSDictionary *extInfo, id<ICMErrorInfo> error) {
                                  
                                  NSMutableDictionary *resultDict = [NSMutableDictionary dictionary];
                                  [resultDict setObject:[NSNumber numberWithInteger:4] forKey:@"action"];
                                  [resultDict setObject:[NSNumber numberWithInteger:state] forKey:@"state"];
                                  [resultDict setObject:[NSNumber numberWithInteger:shareType] forKey:@"type"];
                                  
                                  if (state == SSResponseStateSuccess)
                                  {
                                      NSMutableArray *friends = [NSMutableArray array];
                                      for (int i = 0; i < [users count]; i++)
                                      {
                                          id<ISSPlatformUser> userInfo = [users objectAtIndex:i];
                                          
                                          [friends addObject:[userInfo sourceData]];
                                      }
                                      [resultDict setObject:friends forKey:@"users"];
                                  }
                                  else if (state == SSResponseStateFail)
                                  {
                                      if (error)
                                      {
                                          NSMutableDictionary *errorDict = [NSMutableDictionary dictionary];
                                          [errorDict setObject:[NSNumber numberWithInteger:[error errorCode]] forKey:@"error_code"];
                                          if ([error errorDescription])
                                          {
                                              [errorDict setObject:[error errorDescription] forKey:@"error_msg"];
                                          }
                                          [resultDict setObject:errorDict forKey:@"error"];
                                      }
                                  }
                                  
                                  NSString *resultStr = [ShareSDK jsonStringWithObject:resultDict];
                                  UnitySendMessage([observerStr UTF8String], "_callback", [resultStr UTF8String]);
                              }];
        

    }
    
    
    void __iosShareSDKGetCredential (int platType, void *observer)
    {
        ShareType shareType = (ShareType)platType;
        
        NSString *observerStr = [NSString stringWithCString:observer encoding:NSUTF8StringEncoding];
        
        id<ISSPlatformCredential> credential = [ShareSDK getCredentialWithType:shareType];
        NSMutableDictionary *resultDict = [NSMutableDictionary dictionary];
        [resultDict setObject:[NSNumber numberWithInteger:5] forKey:@"action"];
        [resultDict setObject:[NSNumber numberWithInteger:SSResponseStateSuccess] forKey:@"state"];
        [resultDict setObject:[NSNumber numberWithInteger:shareType] forKey:@"type"];
        
        if (credential)
        {
            NSMutableDictionary *credDict = [NSMutableDictionary dictionaryWithDictionary:[credential extInfo]];
            if ([credential uid])
            {
                [credDict setObject:[credential uid] forKey:@"uid"];
            }
            if ([credential token])
            {
                [credDict setObject:[credential token] forKey:@"token"];
            }
            if ([credential secret])
            {
                [credDict setObject:[credential secret] forKey:@"secret"];
            }
            if ([credential expired])
            {
                [credDict setObject:@([[credential expired] timeIntervalSince1970]) forKey:@"expired"];
            }
            [resultDict setObject:credDict forKey:@"credential"];
        }
        
        NSString *resultStr = [ShareSDK jsonStringWithObject:resultDict];
        UnitySendMessage([observerStr UTF8String], "_callback", [resultStr UTF8String]);
    }
    
#if defined (__cplusplus)
}
#endif

@implementation ShareSDKUnity3DBridge

@end
至此,在Unity项目工程中设置修改完成,接下来需要发布成Xcode项目工程,继续做设置修改!

接下来接着参考Mob官方关于shareSDK For iOS 快速集成指南文档!

步骤5:下载 ShareSDK For iOS 文件




打开刚构建发布出来的Xcode项目工程:按照官方文档快速集成第一步那样将ShareSDK文件拖入工程

如左上方所示,ShareSDK文件已经成功导入。

现在根据集成文档第二步那样,添加相应的依赖库,需要注意的是:那些“必须添加的依赖库”中,其实有一部分已经导入Xcode中,你可以删除进行再添加或者只须将缺少的“必须添加的依赖库”添加进去。

另外,还需要根据需要的分享平台,对照添加对应的依赖库。
如新浪微博还需:

QQ及空间

值得体醒的是:这些必要的库虽全部添加进去,但运行时,还是报出xxxx库没添加的情况,若是这样的情况,那么你就先删除那个库,再重新添加即可。

关于新浪微博,我们还需要进行回调处理设置,否则运行会出现点击新浪微博分享时,先跳转到微博但马上反弹回我们的应用中即调用不成功的现象发生!
我们还需要打开UnityAppController.mm脚本,添加和修改如下代码:
//引入头文件
#import <ShareSDK/ShareSDK.h>



//添加该方法
-(BOOL)application:(UIApplication*)application handleOpenURL:(NSURL*)url
{
    return [ShareSDK handleOpenURL:url wxDelegate:nil];
    
}
//修改该方法
- (BOOL)application:(UIApplication*)application openURL:(NSURL*)url sourceApplication:(NSString*)sourceApplication annotation:(id)annotation
{
//	NSMutableArray* keys	= [NSMutableArray arrayWithCapacity:3];
//	NSMutableArray* values	= [NSMutableArray arrayWithCapacity:3];
//
//	#define ADD_ITEM(item)	do{ if(item) {[keys addObject:@#item]; [values addObject:item];} }while(0)
//
//	ADD_ITEM(url);
//	ADD_ITEM(sourceApplication);
//	ADD_ITEM(annotation);
//
//	#undef ADD_ITEM
//
//	NSDictionary* notifData = [NSDictionary dictionaryWithObjects:values forKeys:keys];
//	AppController_SendNotificationWithArg(kUnityOnOpenURL, notifData);
//	return YES;
    return [ShareSDK handleOpenURL:url sourceApplication:sourceApplication annotation:annotation wxDelegate:nil];
}

接下来点击“info”选项卡,添加新浪微博、微信、QQ的URLType
注意的是:这些值的规范必须参考Mob关于iOS快速集成指南中的来设置。

另外,若是现在真机运行还会出现如下错误的话,下面截图中提供了一种解决方法仅供参考:

至此,关于Unity3d集成Mob社会化分享且想发布到iOS平台的全过程已经讲完,希望对读者有帮助!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Data菌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值