美文网首页VR相关
VR开发-分享平台的建设(涉及第三方登陆)

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

作者: 元宇宙协会 | 来源:发表于2017-04-12 17:01 被阅读137次

    1、什么是分享?

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

    2、分享方式:

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

    3、分享平台

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


    Paste_Image.png
    4、常见的分享平台
    1、友盟分享 点击进入官网
    选择Unity就可以使用了

    这个下载比较坑

    Paste_Image.png Paste_Image.png

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

    2、Share分享点击进入官网
    Paste_Image.png

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

    Paste_Image.png Paste_Image.png

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

    Paste_Image.png

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

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

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

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

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


    image.png

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

    搭建界面
    public class ShareSDKTest : MonoBehaviour {
    
        private ShareSDK shareSDK;
        public Text messageText;
    
        void Start () {
            shareSDK = GetComponent <ShareSDK> ();
            //  //分享回调事件 绑定
            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);
    

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

    打印结果:

    打印结果
    第三方登陆:

    经常会遇到这种界面:

    快速登陆

    这种如何制作?

        private ShareSDK shareSDK;
        public Text messageText;
        void Start () {
            shareSDK = GetComponent <ShareSDK> ();
            //授权回调事件
            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 !~!~~~~~~";
    
            }
    
        }
    
    
    测试无毒放心使用,可以加入首页Q群下载
    3、二维码分享

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

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/fwimattx.html