VR开发-分享平台的建设(涉及第三方登陆)

1、什么是分享?

发朋友圈,扣扣空间,转载文章,转发链接给扣扣好友,微信好友,这就是分享!

2、分享方式:

1、跳转APP,例如我们在一些应用上通过分享至朋友圈或者分享至微博等。
2、二维码扫描分享,二维码中带有分享的信息。
但是怎么在Unity中进行分享呢?

3、分享平台

说到分享其实无外乎微信,微博,QQ平台。
但是实际上有很多平台,只不过我们访问不到而已,如果要做国际化分享,那么就必须导入相应的SDK


VR开发-分享平台的建设(涉及第三方登陆)_第1张图片
Paste_Image.png
4、常见的分享平台
1、友盟分享 点击进入官网
VR开发-分享平台的建设(涉及第三方登陆)_第2张图片
选择Unity就可以使用了

这个下载比较坑

VR开发-分享平台的建设(涉及第三方登陆)_第3张图片
Paste_Image.png
VR开发-分享平台的建设(涉及第三方登陆)_第4张图片
Paste_Image.png

官方的集成文档没什么难度,主要在于对Unity的熟悉程度,还有就是打包后,调用各平台的设置比较麻烦

2、Share分享点击进入官网
VR开发-分享平台的建设(涉及第三方登陆)_第5张图片
Paste_Image.png

这边点击相应的平台下载后,会直接打开相应的GitHub网址

VR开发-分享平台的建设(涉及第三方登陆)_第6张图片
Paste_Image.png
VR开发-分享平台的建设(涉及第三方登陆)_第7张图片
Paste_Image.png

下载后,打开Unity导入进来。包里面总共两个脚本,一张图片

VR开发-分享平台的建设(涉及第三方登陆)_第8张图片
Paste_Image.png

按照GITHub进行相关的开发就可以。

如何使用:将项目中Unity3dDemo/Assets/Plugins目录拷贝到我们项目的Assets目录,或者导入sharesdk-unity3d-plugin.unitypackage

1.给Camera挂载ShareSDK脚本.这个脚本是用来配置分享的平台信息

2.默认分享平台比较多,如果只想支持部分平台的分享, 只需要去修改 ShareSDKDevInfo 脚本中 DevInfoSet 类. 注释掉不需要的分享的平台即可

3.接下来实现自定义界面来分享功能
这是系统的小案例,我们只需要将分享平台进行对应的添加。至于里面的App_Id是什么?这个实在腾讯微信平台注册的id号。这里可以去微信开发者平台根据相关流程获取。


VR开发-分享平台的建设(涉及第三方登陆)_第9张图片
image.png

那么我们如何进行自定义分享呢?

VR开发-分享平台的建设(涉及第三方登陆)_第10张图片
搭建界面
public class ShareSDKTest : MonoBehaviour {

    private ShareSDK shareSDK;
    public Text messageText;

    void Start () {
        shareSDK = GetComponent  ();
        //  //分享回调事件 绑定
        shareSDK.shareHandler += ShareResultHandle;
    }

    // 点jiWechat进行分享
    public void wechatOnClickToShare()
    {
        ShareContent content = new ShareContent ();
        content.SetText ("雷潮开始发功了");
        content.SetTitle ("你懂的");
        // 分享网址
        content.SetUrl ("http://www.jianshu.com/u/74372cf48f59");

        //出分享菜单选列表
        shareSDK.ShowPlatformList (null, content, 100, 100);
        // 指定分享平台
        shareSDK.ShowShareContentEditor (PlatformType.WeChat, content);
    }
        
    //分享结果回调
    void ShareResultHandle (int reqID, ResponseState state,PlatformType type,Hashtable data)
    {
        if (state == ResponseState.Success) {

            messageText.text = MiniJSON.jsonEncode (data);

        } else if (state == ResponseState.Fail) {

            print ("fail! throwable stack = " +
                data ["stack"] + "; error msg = "
                + data ["msg"]);

        } else if (state == ResponseState.Cancel) {
            messageText.text = "Cancel !~!~~~~~~";
        }
    }
}

另一个扣扣分享也是一样的写法,唯独在上面分享平台选择修改一下

                // 指定分享平台
        shareSDK.ShowShareContentEditor (PlatformType.QQ, content);

这里要注意,按钮事件需要注册绑定。别到时候傻逼。。。

打印结果:

打印结果
第三方登陆:

经常会遇到这种界面:

VR开发-分享平台的建设(涉及第三方登陆)_第11张图片
快速登陆

这种如何制作?

    private ShareSDK shareSDK;
    public Text messageText;
    void Start () {
        shareSDK = GetComponent  ();
        //授权回调事件
        shareSDK.authHandler += AuthResultHandle;
        //用户信息事件
        shareSDK.showUserHandler += GetUserInfoResoultHandle;
    }
// 注意:一般在开发过程中,会判断用户手机有没有装相关的快速登陆的软件,例如没有装QQ那么就不显示QQ快捷登陆
      // QQ登陆   
       public void loginQQClick()
    {
        // 选择何种方式登陆
        shareSDK.Authorize (PlatformType.QQ);
    }
     // 微信登陆
    public void loginWechatClick()
    {
        shareSDK.Authorize (PlatformType.WeChat);
    }
   // 登陆状态句柄
    void AuthResultHandle (int reqID, ResponseState state,PlatformType type,Hashtable data)
    {
        if (state == ResponseState.Success) {
            messageText.text = "授权登录成功";

            //授权成功的话, 获取用户的资料
            shareSDK.GetUserInfo (type);

        } else if (state == ResponseState.Fail) {

            print ("fail! throwable stack = " +
                data ["stack"] + "; error msg = "
                + data ["msg"]);

        } else if (state == ResponseState.Cancel) {

            messageText.text = "Cancel !~!~~~~~~";

        }
    }
// 获取返回信息
    void GetUserInfoResoultHandle(int requisetID,ResponseState state,PlatformType type,Hashtable data)
    {
        if (state == ResponseState.Success) {
            //利用PlatformType来判断不同的平台获取用户信息的回调
            //将返回数据编码成Json格式的数据, 进行json解析展示到界面即可
            switch (type) {
            case PlatformType.QQ:
                messageText.text = MiniJSON.jsonEncode (data);
                break;
            }

        } else if (state == ResponseState.Fail) {

            print ("fail! throwable stack = " +
                data ["stack"] + "; error msg = "
                + data ["msg"]);

        } else if (state == ResponseState.Cancel) {

            messageText.text = "Cancel !~!~~~~~~";

        }

    }

VR开发-分享平台的建设(涉及第三方登陆)_第12张图片
测试无毒放心使用,可以加入首页Q群下载
3、二维码分享

其实二维码分享主要是将网页嵌入,通过扫描工具进行相关的分享。这个适合将游戏过程或者结果进行分享,同时夹带我们的广告,类似绑定宣传。
Unity进行二维码生成

你可能感兴趣的:(VR开发-分享平台的建设(涉及第三方登陆))