CocosCreator + nodeJs 课程8 安卓接入微信登录之友盟接入

2023-10-16 07:20

本文主要是介绍CocosCreator + nodeJs 课程8 安卓接入微信登录之友盟接入,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我们使用友盟提供的第三方功能来实现微信登录功能。大家注册一个友盟账号来下载需要的内容(该内容可以点击此处免费下载)。以下内容以Android版本为例。

集成工具
1、打开上述下载的集成包,然后点击“友盟集成工具.jar”包
在这里插入图片描述
2、选择 “微信精简版” 和 “AndroidStudio” 选项,并点击OK。在这里插入图片描述
3、上述操作之后,会生成一个“umeng_integratetool_result”文件夹。这就是我们所需的导入文件。

在这里插入图片描述
导入工程
1、用AndroidStudio工具打开工程项目,右键点击"res / Reveal in finder"。
在这里插入图片描述
2、跳转窗口会自动转至文件所在的文件夹,包含的内容如下图。
在这里插入图片描述
3、将“umeng_integratetool_result”文件夹下的内容拷贝到上述文件夹中(注意:拷贝过程中,不要点击替换,要点击合并)。之后,我们就可以在AndroidStudio工程中发现多了个"jniLibs"文件。

4、选中“jniLibs ”文件下的所有文件,并右键点击,选择“ Add as Library”。之后AndroidStudio会进行一系列的导入工作,我们只需耐心等耐即可。

5、导入成功之后,找到项目中的"AndroidManifest.xml",并在合适位置加入以下代码,注意示图中标红框的内容。

<activityandroid:name="wxapi.WXEntryActivity"android:configChanges="orientation|keyboardHidden|screenSize"android:exported="true"android:screenOrientation="portrait"android:theme="@android:style/Theme.Translucent.NoTitleBar"></activity>

在这里插入图片描述
6、接下来我们编写一个UmengManager.java文件,封装了一个友盟第三方调用的方法。

package com.tongfei.umeng;  //注意:此包名填写你自己wxapi所在的包名import com.umeng.socialize.Config;
import com.umeng.socialize.PlatformConfig;
import com.umeng.socialize.ShareAction;
import com.umeng.socialize.UMAuthListener;
import com.umeng.socialize.UMShareAPI;
import com.umeng.socialize.UMShareListener;
import com.umeng.socialize.bean.SHARE_MEDIA;
import com.umeng.socialize.media.UMImage;
import com.umeng.socialize.media.UMWeb;
import org.cocos2dx.javascript.AppActivity;
import org.cocos2dx.lib.Cocos2dxJavascriptJavaBridge;
import java.util.HashMap;
import java.util.Map;//cocos里重载UmengManager的一些回调方法即可
public class UmengManager {public static AppActivity g_Activity = null;public static void init(AppActivity activity) {g_Activity = activity;UMShareAPI.get(g_Activity);Config.isJumptoAppStore = true;}public static void setWeixinPlatForm(String appID,String screatID){PlatformConfig.setWeixin(appID, screatID);}//判断微信是否登录public static boolean isWeixinInstalled(String placeHolder){return true;}public static void weixinLogin(String placeHolder) {g_Activity.runOnUiThread(new Runnable() {@Overridepublic void run() {UMShareAPI mShareAPI = UMShareAPI.get(g_Activity);//mShareAPI.doOauthVerify(g_Activity, SHARE_MEDIA.WEIXIN, umAuthListener);mShareAPI.getPlatformInfo(g_Activity, SHARE_MEDIA.WEIXIN, platformListener);}});}public  static void weixinFrendShareImage(final String localImageUrl){g_Activity.runOnGLThread(new Runnable() {@Overridepublic void run() {final String finalimageUrl = localImageUrl;UMImage image = new UMImage(g_Activity, finalimageUrl);//网络图片new ShareAction(g_Activity).setPlatform(SHARE_MEDIA.WEIXIN).withMedia(image).setCallback(umShareListener).share();}});}public static void weixinShare(final String title, String desc, String imageUrl, String webUrl){//微信分享final String finalTitle = title;final String finaldesc = desc;final String finalimageUrl = imageUrl;final String finalwebUrl = webUrl;g_Activity.runOnUiThread(new Runnable() {@Overridepublic void run() {UMImage thumb = new UMImage(g_Activity, finalimageUrl);//网络图片thumb.setDescription(finaldesc);UMWeb web = new UMWeb(finalwebUrl);//网络图片web.setThumb(thumb);web.setTitle(finalTitle);web.setDescription(finaldesc);new ShareAction(g_Activity).setPlatform(SHARE_MEDIA.WEIXIN_CIRCLE).withMedia(web).setCallback(umShareListener).share();}});}public static void weixinFriendShare(String title,String desc,String imageUrl,String webUrl){//微信好友分享final String finalTitle = title;final String finaldesc = desc;final String finalimageUrl = imageUrl;final String finalwebUrl = webUrl;g_Activity.runOnUiThread(new Runnable() {@Overridepublic void run() {UMImage thumb = new UMImage(g_Activity, finalimageUrl);//网络图片thumb.setDescription(finaldesc);UMWeb web = new UMWeb(finalwebUrl);//网络图片web.setThumb(thumb);web.setTitle(finalTitle);web.setDescription(finaldesc);new ShareAction(g_Activity).setPlatform(SHARE_MEDIA.WEIXIN).withMedia(web).setCallback(umShareListener).share();}});}public static void notifyLoginSuccess(Map<String, String> info) {int isOK = info == null?0:1;if(isOK == 0){info = new HashMap();}final String successMsg = String.format("var UmengNative = require(\'UmengNative\'); UmengNative.weixinLoginSuccess(%s,\'%s\',\'%s\',\'%s\',\'%s\',\'%s\',\'%s\',\'%s\',\'%s\',\'%s\',\'%s\',\'%s\');",isOK,info.get("openid"), info.get("unionid"),info.get("access_token"), info.get("refresh_token"), info.get("expires_in"), info.get("screen_name"), info.get("city"), info.get("prvinice"),info.get("country"), info.get("gender"), info.get("profile_image_url"));g_Activity.runOnGLThread(new Runnable() {@Overridepublic void run() {Cocos2dxJavascriptJavaBridge.evalString(successMsg);}});}public static void notifyShareFinish(int isOK){final String successMsg = String.format("var UmengNative = require(\'UmengNative\'); UmengNative.weixinShareSuccess(%d);",isOK);g_Activity.runOnGLThread(new Runnable() {@Overridepublic void run() {Cocos2dxJavascriptJavaBridge.evalString(successMsg);}});}private static UMShareListener umShareListener = new UMShareListener() {@Overridepublic void onStart(SHARE_MEDIA share_media) {}@Overridepublic void onResult(SHARE_MEDIA platform) {//Log.d("plat","platform"+platform);//Toast.makeText(g_Activity, platform + " 分享成功啦", Toast.LENGTH_SHORT).show();notifyShareFinish(1);}@Overridepublic void onError(SHARE_MEDIA platform, Throwable t) {//Toast.makeText(g_Activity,platform + " 分享失败啦", Toast.LENGTH_SHORT).show();if(t!=null){//Log.d("throw","throw:"+t.getMessage());}//notifyShareFinish(0);}@Overridepublic void onCancel(SHARE_MEDIA platform) {//Toast.makeText(g_Activity,platform + " 分享取消了", Toast.LENGTH_SHORT).show();//notifyShareFinish(0);}};private static UMAuthListener platformListener = new UMAuthListener() {@Overridepublic void onStart(SHARE_MEDIA share_media) {}@Overridepublic void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) {//Toast.makeText(g_Activity, "getInfo succeed", Toast.LENGTH_SHORT).show();notifyLoginSuccess(data);}@Overridepublic void onError(SHARE_MEDIA platform, int action, Throwable t) {//Toast.makeText( g_Activity, "Authorize fail", Toast.LENGTH_SHORT).show();notifyLoginSuccess(null);}@Overridepublic void onCancel(SHARE_MEDIA platform, int action) {//Toast.makeText( g_Activity, "Authorize cancel", Toast.LENGTH_SHORT).show();notifyLoginSuccess(null);}};
}

7、回到AndroidStudio项目工程中,右键点击java文件夹,并选择Reveal in finder。将第6条的.java文件拷贝到wxapi的同级目录。

8、之后,我们在"org.cocos2dx.javascript"包下的AppActivity文件中编写内容。在onCreate方法中添加代码,整体内容如下:

protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);if (!isTaskRoot()) {return;}UmengManager.init(this);UmengManager.setWeixinPlatForm("自己的appID", " 自己的签名");SDKWrapper.getInstance().init(this);}

9、之后再项目工程中,打开"Cradle Scripts / build.gradle(Module:项目名)",其中有个签名signingConfigs配置数据。

signingConfigs {release {if (project.hasProperty("RELEASE_STORE_FILE")) {storeFile file(RELEASE_STORE_FILE)storePassword RELEASE_STORE_PASSWORDkeyAlias RELEASE_KEY_ALIASkeyPassword RELEASE_KEY_PASSWORD}storeFile file('自己的keyStore文件路径')storePassword '自己设置的密码'keyAlias '自己的kayAlias'keyPassword '自己设置的密码'}debug{storeFile file('自己的keyStore文件路径')storePassword '自己设置的密码'keyAlias '自己的kayAlias'keyPassword '自己设置的密码'}}

添加友盟AppKey
1、在AndroidManifest.xml文件中加入下图中的代码。
在这里插入图片描述
2、在AppActivity文件中的onActivityResult方法中,加入下行代码。

UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);

整体布局如图所示:
在这里插入图片描述
到此,Android的配置工作已经完成,接下来进行Creator 的开发过程。

Creator调用友盟
1、在登录脚本中引入头文件

var UmengNative = require('UmengNative')

2、在点击登录事件中,调用友盟接口,如果调用成功,loginData 会是一个Object类型。

UmengNative.weixinLogin( function (loginData) {})
补充

如果要修改logo,需要将下图所示的内容替换掉。在这里插入图片描述
如果想换个包的文件名,需要修改下图所示的内容。
在这里插入图片描述

这篇关于CocosCreator + nodeJs 课程8 安卓接入微信登录之友盟接入的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/HYNN12/article/details/102814303
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/219931

相关文章

Python基于微信OCR引擎实现高效图片文字识别

《Python基于微信OCR引擎实现高效图片文字识别》这篇文章主要为大家详细介绍了一款基于微信OCR引擎的图片文字识别桌面应用开发全过程,可以实现从图片拖拽识别到文字提取,感兴趣的小伙伴可以跟随小编一... 目录一、项目概述1.1 开发背景1.2 技术选型1.3 核心优势二、功能详解2.1 核心功能模块2.

Java中的登录技术保姆级详细教程

《Java中的登录技术保姆级详细教程》:本文主要介绍Java中登录技术保姆级详细教程的相关资料,在Java中我们可以使用各种技术和框架来实现这些功能,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录1.登录思路2.登录标记1.会话技术2.会话跟踪1.Cookie技术2.Session技术3.令牌技

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示

Redis迷你版微信抢红包实战

《Redis迷你版微信抢红包实战》本文主要介绍了Redis迷你版微信抢红包实战... 目录1 思路分析1.1hCckRX 流程1.2 注意点①拆红包:二倍均值算法②发红包:list③抢红包&记录:hset2 代码实现2.1 拆红包splitRedPacket2.2 发红包sendRedPacket2.3 抢

spring security 超详细使用教程及如何接入springboot、前后端分离

《springsecurity超详细使用教程及如何接入springboot、前后端分离》SpringSecurity是一个强大且可扩展的框架,用于保护Java应用程序,尤其是基于Spring的应用... 目录1、准备工作1.1 引入依赖1.2 用户认证的配置1.3 基本的配置1.4 常用配置2、加密1. 密

SpringBoot后端实现小程序微信登录功能实现

《SpringBoot后端实现小程序微信登录功能实现》微信小程序登录是开发者通过微信提供的身份验证机制,获取用户唯一标识(openid)和会话密钥(session_key)的过程,这篇文章给大家介绍S... 目录SpringBoot实现微信小程序登录简介SpringBoot后端实现微信登录SpringBoo

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

kali linux 无法登录root的问题及解决方法

《kalilinux无法登录root的问题及解决方法》:本文主要介绍kalilinux无法登录root的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录kali linux 无法登录root1、问题描述1.1、本地登录root1.2、ssh远程登录root2、

SpringBoot实现微信小程序支付功能

《SpringBoot实现微信小程序支付功能》小程序支付功能已成为众多应用的核心需求之一,本文主要介绍了SpringBoot实现微信小程序支付功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录一、引言二、准备工作(一)微信支付商户平台配置(二)Spring Boot项目搭建(三)配置文件

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片