cocos creator 部署微信云开发

cocos creator 部署微信云开发cocoscreator部署微信云开发

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

(这仅为小弟的学习笔记,不作为教程,如有错误请大佬指出)

cocos creator中通过调用微信的接口去获取用户授权的信息,之后云函数把用户数据保存至云数据库,再从数据库回调到cocos端处理。比如把用户头像和名称通过远程加载到cocos小游戏中使用。

在这里插入图片描述

一.登录游戏,授权用户信息:

在微信开发者中进入游戏,用户点击任意位置的时候,获取用户的授权信息。

//main.js
 onLoad() { 
   
    this.authorizationBox()
  }
  //微信授权按钮的创建,点击屏幕任意位置弹出授权框
  authorizationBox() { 
   
    if (sys.Platform.WECHAT_GAME) { 
   //如果是微信平台
      window['wx'].login({ 
   //登录游戏
        success: function (res) { 
   
          if (res.code) { 
   
            console.log('登陆成功');
          }
          //创建一个全屏的授权按钮
          let button = window['wx'].createUserInfoButton({ 
   //创建一个获取用户信息的按钮
            type: 'text',
            text: '',
            style: { 
   
              height: window['wx'].getSystemInfoSync().screenHeight,//获取屏幕的宽高
              width: window['wx'].getSystemInfoSync().screenWidth,
              backgroundColor: '#00000000',//最后两位为透明度
              color: '#ffffff',
              textAlign: 'center',
            }
          })
          button.show()    //把按钮显示出来
          button.onTap((res) => { 
             //监听按钮的点击
            if (res.errMsg === 'getUserInfo:ok') { 
   
              console.log('授权成功');
              button.destroy()
            } else { 
   
              console.log('授权失败');
            }
          })
        }
      })
    }
  }

Jetbrains全家桶1年46,售后保障稳定

效果:弹出两次授权框

在这里插入图片描述

二.初始化云环境:

把刚刚授权好的用户信息通过微信云函数保存到微信云数据库中。所以这里需要一个数据库和一个云函数。

1.初始化“cloud”云环境

在这里插入图片描述

2.创建一个微信云数据库“data”

在这里插入图片描述

3.创建“login”云函数在这里插入图片描述
4.编写”login”云函数的index.js

在这里插入图片描述

//login云函数的index.js脚本
// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init()
const db = cloud.database()//引用云数据库
const userinfo = db.collection("data")//引用data数据表(刚创建的那个数据表名称)

// 云函数入口函数
exports.main = async (event, context) => { 
   
  const wxContext = cloud.getWXContext()

  //查询数据库是否已经注册
  let isHas =await userinfo.where({ 
   
    openid:wxContext.OPENID
  }).get()

  //如果没有注册
  if(isHas.data.length==0){ 
   
    let isAdd = null
    let addData = { 
   
      openid:wxContext.OPENID,
      userinfo:event.userinfo,
      due:new Date()
    }
    //把获取的数据添加到数据库
    isAdd = userinfo.add({ 
   
      data:addData,
    })
    return{ 
   
      code:'save',
      res:isAdd,
      data:addData
    }
  }
else{ 
   
  //已经注册
  return{ 
   
    code:'get',
    res:isHas.data
  }
}
  
}
5.上传部署

在这里插入图片描述
上传部署成功在这里插入图片描述

三.处理用户授权信息:

在cocos中创建一个变量存储云函数回调的用户信息,再创建一个全局函数调用云函数。

1.创建全局变量,用于保存从云端回调的用户信息
//GlobaData.js
export { 
    }
window['Globa'] = { 
   
  userInfo: null
}
2.创建全局云函数调用login
//GlobalWechat.js
export { 
    }
//调用云函数处理注册信息
window['onReisterUser'] = function (_userInfo) { 
   
  window['wx'].cloud.callFunction({ 
   
    name: "login",//云函数名字
    data: { 
   
      userinfo: _userInfo,
    },
    success(res) { 
   
      console.log('处理注册信息成功', res);
     window['Globa'].userInfo = res.result.res[0].userinfo
      console.log('获取到回调的用户信息:', window['Globa'].userInfo);
    },
    fail: console.error()
  })

}

3.在main.js授权脚本调用全局函数,对用户授权的注册信息进行处理

在这里插入图片描述

4.打包发布,在微信云开发上运行,并设置云环境(每一次构建打包都需要重新设置云环境)

在这里插入图片描述

5.上传用户数据成功,这样子在cocos中就可以获取到用户数据了,也能把用户数据存到云数据库中。

在这里插入图片描述

四.分享转发

分享有两种,一种是主动分享(wx.shareAppMessage),l另一种是右上角的被动分享(wx.showShareMenu)

这里主动分享我用微信云来存储要分享的信息,而被动分享的话把分享信息直接存在本地,存在本地比存在微信云方便,就是想练练手。

被动分享


 //share.js,被动分享(右上角分享按钮)
  passiveShare() { 
   
    if (sys.Platform.WECHAT_GAME) { 
   
      //显示当前页面转发按钮
      window['wx'].showShareMenu({ 
   
        success: (result) => { 
   
          console.log('开启被动转发成功');
        },
        fail: (res) => { 
   
          console.log('开启被动转发失败', res);
        },
      });
      //分享
      window['wx'].onShareAppMessage(() => { 
   
        let title = [//分享时候显示的标题
          '来锻炼一下左右脑协调能力吧!跟着我左脑右脑一个慢动作!',
          '你是左脑快还是右脑快呢,快来试试看把!',
          '冰墩墩邀请你一起玩钢架雪车!',
          '听说你也想拥有一个冰墩墩!',
        ]
        let rand = Math.floor(Math.random() * 4)
        return { 
   
          title: title[rand],
          imageUrl: '', //分享时候显示的图片,如果没有图片就是默认的Canvas,这里我没有添加图片
          query: '成功分享游戏'
        }
      })
    }
  }

主动分享

1.上传分享需要需要用到的图片到云存储中,这里上传两张。

图一:
在这里插入图片描述
图二:
在这里插入图片描述

2.在数据库创建两个集合保存需要分享的标题和图片

集合一:保存分享标题
在这里插入图片描述
集合二:保存分享图片

在这里插入图片描述

3.在cocos中创建一个按钮,并且调用onClickButton函数

在这里插入图片描述

//share.js
 onClickButton() { 
   
   //主动分享页面,调用getShareInfo云函数
   window['wx'].cloud.callFunction({ 
   
     name: 'getShareInfo',//调用云函数,下面步骤会写这个函数
     success(res) { 
   
       console.log('主动分享成功',res);
       let _title = res.result.title.title //由数据表传过来的数据
       let _pic = res.result.picture.url
       window['wx'].shareAppMessage({ 
   
         title: _title,
         imageUrl: _pic,
       })
     },
     fail: console.error
   })

 }
4.在微信写getShareInfo云函数,然后上传部署。
// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init()

//链接数据库
let db = cloud.database()
let _pic = db.collection('share_pic')
let _title = db.collection('share_title')

// 云函数入口函数
exports.main = async (event, context) => { 
   
  const wxContext = cloud.getWXContext()

  //获取数据表数据
let promise_pic = await _pic.get()
let promise_title = await _title.get()

  //把数据随机返回给调用者
return({ 
   
  title:promise_title.data[Math.floor(Math.random()*promise_title.data.length)],
  picture:promise_pic.data[Math.floor(Math.random()*promise_pic.data.length)],
  errMsg:promise_title.errMsg,
})
}
5.构建打包,点击分享按钮就可以成功!

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/213615.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Mybatis源码分析_struts源码

    Mybatis源码分析_struts源码Mybatis提供了一个简单的逻辑分页类RowBounds,其原理类似于在内存中做了一个分页,不是数据库层面的分页,性能不算好,谨慎使用一.RowBounds源码分析1RowBounds源码:/***Copyright2009-2017theoriginalauthororauthors.**LicensedundertheApacheLicense,Version2.0(the”License”);*youmaynot.

  • java http协议_java编写协议

    java http协议_java编写协议前面一篇博客里面已经介绍过SSDP协议原理,本篇博客将实现实现Android上的SSDP协议。关键技术分析:1、发送广播;须要发送送广播,所以须要使用MulticastSocket、SocketAddress、InetAddress,须要掌握。2、SSDP数据报格式;标准的SSDPServer解析的时候对于分段的字段选用的特征码是”\r\n”,须要特别注意。3、訪问权限;须要互联网,要在Main…

    2022年10月11日
  • java实现万年历[通俗易懂]

    java实现万年历[通俗易懂]万年历代码实现packagecom.zll;​importjava.util.Scanner;​/***总结:遇到的bug把传入判断年份的日期都传成输入的year了,应该传入要计算的每一年

  • Copy Rounting (BAPI:BAPI_ROUTING_CREATE)

    Copy Rounting (BAPI:BAPI_ROUTING_CREATE)FORMfrm_uploadUSINGvalue(ps_i_tabindex)LIKEsy-tabixvalue(pc_i_fieldname)TYPEslis_fieldnameCHANGING

  • win10 系统WLAN不见了,win10找不到wifi选项的解决办法

    win10 系统WLAN不见了,win10找不到wifi选项的解决办法问题如下图所示:可以看到没有WLAN设置的选项而且是无网络的状态解决办法:两步就好了第一步,以管理员身份运行CMD点击Cortana输入cmd鼠标右键命令提示符以管理员身份运行还有一种办法就是进入C:\Windows\System32还是右键以管理员身份运行两种方法都可以第二步:使用netshwinsockreset…

  • Linux解压命令「建议收藏」

    Linux解压命令「建议收藏」1.压缩命令:  命令格式:tar -zcvf  压缩文件名.tar.gz  被压缩文件名     可先切换到当前目录下。压缩文件名和被压缩文件名都可加入路径。 2.解压缩命令:  命令格式:tar -zxvf  压缩文件名.tar.gz  解压缩后的文件只能放在当前的目录。 3.Linux下如何解压tar.bz2文件             在l…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号