项目使用了ShareSDK来做分享功能,ShareSDK还是很良心的作为一个免费的软件竟然还有回复率很高的客服。这帮助了我很多,还有一些问题是在网上查到的答案。过于基础的知识就不再赘述了,可以通过其他人写的博客或者官方文档来了解。
闲言少叙,我们从第一个自定义分享界面开始。
一、自定义分享界面
在分享的时候我们可能不希望用到ShareSDK提供的界面,或者我们需要分享的平台没有它提供的那么多。此时我们就需要进行自定义界面这个工作了。
首先我们看一下原生的Demo是怎么做的,然后根据它的逻辑进行我们的一些自定义修改。原生的代码如下:
public void ShowShareMenu()
{
ShareContent content = new ShareContent();
//(Android only) 隐藏九宫格里面不需要用到的平台(仅仅是不显示平台)
//(Android only) 也可以把jar包删除或者把Enabl属性e改成false(对应平台的全部功能将用不了)
String[] platfsList = { ((int)PlatformType.QQ).ToString(), ((int)PlatformType.Facebook).ToString(), ((int)PlatformType.TencentWeibo).ToString() };
content.SetHidePlatforms(platfsList);
content.SetText("---");
//分享图片链接。
content.SetImageUrl("https://car2.autoimg.cn/cardfs/product/g5/M00/2A/9D/1024x0_1_q87_autohomecar__wKjB0lo8bfmAW3jeAANc_bJcaOk942.jpg");
content.SetTitle("---");
//(Android only) 针对Android绕过审核的多图分享,传图片String数组
String[] imageArray = { "/sdcard/test.jpg", "http://f1.webshare.mob.com/dimgs/1c950a7b02087bf41bc56f07f7d3572c11dfcf36.jpg", "/sdcard/test.jpg" };
content.SetImageArray(imageArray);
content.SetTitleUrl("http://www.mob.com");
content.SetSite("Mob-ShareSDK");
content.SetSiteUrl("http://www.mob.com");
content.SetUrl("http://www.mob.com");
content.SetComment("test description");
content.SetMusicUrl("http://mp3.mwap8.com/destdir/Music/2009/20090601/ZuiXuanMinZuFeng20090601119.mp3");
content.SetShareType(ContentType.Image);
//不同平台分享不同内容
ShareContent customizeShareParams = new ShareContent();
customizeShareParams.SetText("Sina share content");
customizeShareParams.SetImageUrl("http://git.oschina.net/alexyu.yxj/MyTmpFiles/raw/master/kmk_pic_fld/small/107.JPG");
customizeShareParams.SetShareType(ContentType.Text);
customizeShareParams.SetObjectID("SinaID");
content.SetShareContentCustomize(PlatformType.SinaWeibo, customizeShareParams);
//优先客户端分享
// content.SetEnableClientShare(true);
//使用微博API接口应用内分享 iOS only
// content.SetEnableSinaWeiboAPIShare(true);
ScreenCapture.CaptureScreenshot("ScreenShotToShare");
content.SetImagePath(Application.persistentDataPath+ "/ScreenShotToShare");
//通过分享菜单分享
ssdk.ShowPlatformList(null, content, 100, 100);
//重写分享界面。
//ssdk.ShareContent();
}
上边的代码片段就是ShareSDK用来调出分享的代码,核心的代码是:”ssdk.ShareContent()”这一句。我们只需要重新设置一下Content,然后通过自己写的UGUI去调用分享的方法就可以了。重新设置界面的工作需要在Unity中用UGUI自己拼一个界面就可以了。下图是我自己做的分享界面。
调用代码如下:
//分享到微信朋友圈
public void ShareWechatMoments()
{
ShareContent content = new ShareContent();
content = ShareContentSet(content);
//重写分享界面。
ssdk.ShareContent(PlatformType.WeChatMoments, content);
}
//设置Content的方法,这个方法可以统一设置分享的Text以及分享形式。如果需要增加平台会很方便。
public ShareContent ShareContentSet(ShareContent content)
{
content.SetText("这里是分享内容");
content.SetComment("");
content.SetShareType(ContentType.Image);
//content.SetEnableClientShare(true);
if (myScreenShotPath!=null)
{
content.SetImagePath(myScreenShotPath);
}
return content;
}
做完上面的部分,我们此时就已经完成了自定义分享界面,可以很方便的进行自己的分享界面的配置。
二、安卓的配置分享
安卓的其他部分都还好,除了需要用户的KeyStore之外,倒是没有什么别的要求了。下边就来说一说怎么解决安卓的分享问题。我们需要做下边三件事情。
- 在Unity中为应用创建一个KeyStore。
- 在微信/新浪开放平台完成Android平台的BundleID填写。以及必须要有的KeyStore,KeyStore的获取方法,后边会说到。
- 申请获取应用的KeyStore。
创建KeyStore,在相应的位置填写KeyStore的名称和密码就可以了:
微信开放平台填写应用签名:
记得应用签名一定要是小写,我写了大写发现没用。。。
应用签名的获取方法:
https://github.com/mobileresearch/weibo_android_sdk/blob/master/app_signatures.apk 这是新浪微博提供的应用签名获取工具,装在手机上之后就可以使用,然后根据指示获取应用签名,然后填写到开放平台就可以了。记得微信和微博都要写啊。 这里安卓的一些配置就已经完成了。
三、IOS的配置分享
IOS需要添加一些库的引用,还有增加白名单等。这里我贴上图给大家看:
首先在引用库中添加如下的一些文件,引用库目录是:Build Phases/Link Binary With Libraries 注意现在的Xcode.dylib已经是.tbd文件了.
做完这一步,还需要添加URL Schemes 。在Info/URL Types中添加如下。注意这里的wb + Appkey,Appkey是你在微博开放平台上申请的AppKey。
配置过了URLTypes,然后就需要配置应用的白名单,即让应用允许调用我们的SDK。路径:Info/Custom IOS Target Properties/LSAppliactionQueriesSchemes然后点击加号增加。
之后进行打包就可以进行分享啦!
我们的项目用到了,微信,微博分享,并且安卓和IOS都分享成功了。如果你有什么问题也可以留言。