Unity中实现接入ShareSDK的微信登陆和分享功能
发布日期:2021-06-30 19:57:17
浏览次数:2
分类:技术文章
本文共 4842 字,大约阅读时间需要 16 分钟。
一:安卓端
——到MobTech官网和微信开发者平台获取shareSDK的AppKey、AppSecret和微信的AppID、AppSecret
——在MobTech官网上下载Unity的ShareSDK并导入unitypackage文件:
——File—BuildSettings—PlayerSettings—Publishing Settings—勾选上Custom Gradle Template(集成的核心文件)和User Proguard File
——File—BuildSettings—PlayerSettings—Publishing Settings—创建并选择签名
——打开Plugins—Android—ShareSDK—AndroidManifest文件,修改Activity的name,就是在.wxapi.WXEntryActivity的activity前加上包名
——删除这两块不必要的内容
——微信规定WXEntryActivity.java类的位置必须放到 “项目包包名.wxapi” 路径下,需要生成新的jar包,熟悉Android Studio可以自己生成,不熟悉的跟客服说帮忙生成一个新的DemoCallback.jar,然后报上package的名字,等几分钟就可以收到新的jar
进入到目录Plugins—Android—ShareSDK—libs下,将新的jar包替换原有的DemoCallback.jar包——微信登录实现
首先shareSDK.Authorize(PlatformType.WeChat)拉取微信(授权) 拉取成功后(shareSDK.authHandler = AuthResultHandler)执行AuthResultHandler回调 在AuthResultHandler回调返回成功后去获得用户信息shareSDK.GetUserInfo(PlatformType.WeChat) 获得用户信息成功后(shareSDK.showUserHandler = GetUserInfoResultHandler)执行GetUserInfoResultHandler回调GetUserInfoResultHandler回调返回成功表示登录成功using System;using System.Collections;using UnityEngine;using cn.sharesdk.unity3d;using UnityEngine.SceneManagement;public class Login : MonoBehaviour{ private ShareSDK shareSDK; //ShareSDK脚本 private void Awake() { shareSDK = FindObjectOfType(); shareSDK.authHandler = AuthResultHandler; shareSDK.showUserHandler = GetUserInfoResultHandler; } /// /// 按下登陆按钮 /// public void OnLoginButtonDown() { //拉起微信 shareSDK.Authorize(PlatformType.WeChat); } //拉取微信成功的回调 private void AuthResultHandler(int reqID, ResponseState state, PlatformType type, Hashtable result) { if (state == ResponseState.Success) { shareSDK.GetUserInfo(PlatformType.WeChat); Debug.Log("authorize success !"); } else if (state == ResponseState.Fail) { Debug.Log("fail! throwable stack = " + result["stack"] + "; error msg = " + result["msg"]); } else if (state == ResponseState.Cancel) { Debug.Log("cancel !"); } } //得到用户信息成功的回调 private void GetUserInfoResultHandler(int reqID, ResponseState state, PlatformType type, Hashtable result) { if (state == ResponseState.Success) { Debug.Log("get user info result :"); Debug.Log(MiniJSON.jsonEncode(result)); //保存用户信息 PlayerPrefs.SetString("userInfo", MiniJSON.jsonEncode(result)); //切换场景 SceneManager.LoadScene("Main"); } else if (state == ResponseState.Fail) { Debug.Log("fail! throwable stack = " + result["stack"] + "; error msg = " + result["msg"]); } else if (state == ResponseState.Cancel) { Debug.Log("cancel !"); } }}////// 用户信息类/// [Serializable]public class Root{ public string nickname; public string headimgurl;}
——微信分享实现
——勾选掉ShareSDK的Bypass Approval,否则分享不能显示 ——微信分享代码设置shareSDK.shareHandler = ShareResultHandler回调,分享成功后执行ShareResultHandler回调using UnityEngine;using cn.sharesdk.unity3d;using System.Collections;public class Share : MonoBehaviour{ private ShareSDK shareSDK; //ShareSDK脚本 private void Awake() { shareSDK = FindObjectOfType(); shareSDK.shareHandler = ShareResultHandler; } /// /// 分享的回调 /// private void ShareResultHandler(int reqID, ResponseState state, PlatformType type, Hashtable result) { if (state == ResponseState.Success) { Debug.Log("share result :"); Debug.Log(MiniJSON.jsonEncode(result)); } else if (state == ResponseState.Fail) { Debug.Log("fail! throwable stack = " + result["stack"] + "; error msg = " + result["msg"]); } else if (state == ResponseState.Cancel) { Debug.Log("cancel !"); } } ////// 按下分享按钮 /// public void OnShareButtonDown() { ShareContent content = new ShareContent(); content.SetText("邀请的文字"); content.SetShareType(ContentType.Text); //WeChat:微信朋友 WeChatMoments:朋友圈 shareSDK.ShareContent(PlatformType.WeChat, content); }}
二:IOS端
三:从服务器下载头像
////// 下载头像 /// /// 头像的url public IEnumerator DownloadHeadicon(string url) { if (url == null) { yield return null; } UnityWebRequest uwr = UnityWebRequest.Get(url); DownloadHandlerTexture downloadTexture = new DownloadHandlerTexture(true); uwr.downloadHandler = downloadTexture; yield return uwr.SendWebRequest(); Texture2D _texture = null; if (!(uwr.isNetworkError || uwr.isHttpError)) { _texture = downloadTexture.texture; headicon_img.texture = _texture; } else { Debug.Log("download Texture Error"); } }
转载地址:https://liuhaowen.blog.csdn.net/article/details/104485581 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月22日 21时14分26秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
The MASM32 SDK version 10 发布了!
2019-04-30
发布软件:TreeInfo(分层信息管理器)
2019-04-30
c++二分图的最大匹配
2019-04-30
c++点的距离
2019-04-30
c++实现彩色炫酷(?)画面
2019-04-30
c++马拦过河卒
2019-04-30
2019NOIP D4题 加工领奖
2019-04-30
1997年世界黑客大赛获奖作品
2019-04-30
论DEV-C++怎样才能做窗口
2019-04-30
Failed to connect to github.com port 443: Operation timed out和弹出无法打开"GoogleSoftwareUpdate.bundle"
2019-04-30
2021.5.19 JS高级第二天
2019-04-30
2021.5.20 JS高级第三天
2019-04-30
2021.5.21 Jquery
2019-04-30
2021.5.22 Jquery
2019-04-30
2021.5.25 JSON
2019-04-30
2021.5.25 Flex
2019-04-30
2021.5.28 AJAX
2019-04-30
正则表达式
2019-04-30
过滤器Filter
2019-04-30
2021.6.1 Array补充
2019-04-30