利用H5开发微信公众号

article/2025/8/20 6:45:28

利用H5开发微信公众号

一、 首先授权配置

 公众号设置 --》功能设置设置业务域名!
  • 1
  • 2
  • 3

自定义菜单 
这里的MP_verify_w7tdZrafqhkK9Mcj.txt文件,需要放到你项目的根目录下,例子:你的项目war包叫 test.war ,里面包含了src,WEB-INFO两个文件夹,则把MP_verify_w7tdZrafqhkK9Mcj.txt放到这两个文件夹的同级目录下;即现在test.war下有两个文件夹一个txt文件:src,WEB-INFO,MP_verify_w7tdZrafqhkK9Mcj.txt. 
后面就需要配置JS接口安全域名和网页授权域名了,最好和业务域名配置为一样就好了。 
二、开发中的配置 
在开发目录下的基本配置中进行配置。 
基本配置–》开发者ID–》AppID(应用ID),AppSecret(应用密钥); 
基本配置–》微信开放平台账号绑定 
这里需要绑定微信开放平台,若不绑定,在获取用户信息的时候就只能获取到用户的openId,不能获取到unionId. 
自定义菜单
注意:定义菜单的时候有讲究了, 
如果你想在用户点这个菜单的时候就拿到用户的微信基本信息(性别,昵称,openId,unionId),这里直接可以配置成为授权链接,授权链接回调url直接写成你后台的一个接口地址,然后由这个接口来跳转到其它页面. 
例子:H5授权的链接: 
http://open.weixin.qq.com/connect/oauth2/authorize?appid=xxxxxxxxx&redirect_uri=http://xxxx.com/test/login&response_type=code&scope=snsapi_userinfo&state=xxx&connect_redirect=1#wechat_redirect 
微信回调的url是一个接口地址:http://xxxx.com/test/login,不能回调网页,因为存在跨域错误。 
state的值是可以自定义的。 
这里的scope是用的snsapi_userinfo,这样可以直接在后台拿到用户信息。 
微信回调这个接口的时候会把code和state的值返回,接口就可以通过code去拿用户的信息了。 
若要用code去拿用户的信息,又会去做一堆事情,这些事情确实麻烦;推荐直接使用第三方的jar包,一步就拿到了。 
推荐的jar包:weixin-java-mp-2.5.0.jar,weixin-java-common-2.5.0.jar; 
maven地址

    <dependency><groupId>com.github.binarywang</groupId><artifactId>weixin-java-mp</artifactId><version>2.5.0</version></dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
 在做微信支付的时候有可能会用到xstream的包,有需要也拿去xstream-1.4.7.jar,xxp3_min-1.1.4.jar,xmlpull-1.1.3.1.jarmaven地址 
  • 1
  • 2
  • 3
  • 4
    <dependency><groupId>com.thoughtworks.xstream</groupId><artifactId>xstream</artifactId><version>1.4.7</version></dependency><dependency><groupId>xpp3</groupId><artifactId>xpp3</artifactId><version>1.1.4c</version></dependency><dependency><groupId>xmlpull</groupId><artifactId>xmlpull</artifactId><version>1.1.3.1</version></dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

这里说下weixin-java-mp-2.5.0.jar的使用方法, 
1.weixin-java-mp-2.5.0.jar里面最重要的类是 
WxMpInMemoryConfigStorage和WxMpService; 
WxMpInMemoryConfigStorage是用来存微信公众号的基本信息的, 
在Spring+SpringMvc中的使用方法例子:

@Configuration
@PropertySource(value={"classpath:wxProperties.properties"},ignoreResourceNotFound = true)
//@DependsOn("propertyPlaceholderConfigurer")
public class WeixinConfig {//直接获取资源文件中的配置的值@Value("${wxProperties.appid}")private String appid;//appId@Value("${wxProperties.appsecret}")private String appsecret;//Appsecret@Value("${wxProperties.token}")private String token;//Token@Value("${wxProperties.aeskey}")private String aesKey;//aeskey,有就填,没有就不填@Value("${wxProperties.partener_id}")private String partenerId;//商户号@Value("${wxProperties.partener_key}")private String partenerKey;//商户秘钥@Value("${wxProperties.notify_url}")private String notifyUrl;//支付后台通知接口地址@Beanpublic static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {PropertySourcesPlaceholderConfigurer ppc = new PropertySourcesPlaceholderConfigurer();ppc.setIgnoreUnresolvablePlaceholders(true);return ppc;}@Beanpublic WxMpConfigStorage wxMpConfigStorage() {WxMpInMemoryConfigStorage configStorage = new WxMpInMemoryConfigStorage();configStorage.setAppId(this.appid);configStorage.setSecret(this.appsecret);configStorage.setToken(this.token);configStorage.setAesKey(this.aesKey);configStorage.setPartnerId(this.partenerId);configStorage.setPartnerKey(this.partenerKey);configStorage.setNotifyURL(this.notifyUrl);return configStorage;}@Beanpublic WxMpService wxMpService() {WxMpService wxMpService = new WxMpServiceImpl();wxMpService.setWxMpConfigStorage(wxMpConfigStorage());return wxMpService;}}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56

这里是配置微信公众号的基本信息,其它地方要使用就直接使用:

    @Autowiredprotected WxMpService wxMpService;
  • 1
  • 2

2.获取微信用户基本信息示例代码:

WxMpOAuth2AccessToken accessToken;
WxMpUser wxMpUser = null;
accessToken = this.wxMpService.oauth2getAccessToken(code);
wxMpUser = this.wxMpService.getUserService().userInfo(accessToken.getOpenId(), null);
//用户的基本信息就在wxMpUser中了,需要的就拿去用了。(注意:微信用户的性别:0:未知,1:男 2:女)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3.H5若要使用微信封装好的js,则需要一些基本的配置信息,完全可以从后天台获取然后返回,示例代码:

 public StatusResult<Map<String, Object>> createJsapiSignature(String url) {Map<String, Object> result = new HashMap<String, Object>();try {WxJsapiSignature  wxJsapiSignature = wxMpService.createJsapiSignature(url);String getJsapiTicket = wxMpService.getJsapiTicket();result.put("wxJsapiSignature", wxJsapiSignature);return StatusResult.success(result, "");} catch (WxErrorException e) {return StatusResult.failed("未知错误出现", result);}}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

这里的url是H5用js代码获取的:

var url = location.href.split('#')[0];
  • 1

4.公众号支付 
流程: 
页面发起–>后台下单后返回前端所需要的参数–>页面发起支付–>用户输入密码付款成功–>微信回调后台通知接口–>业务处理完成 
H5页面发起支付: 
微信公众号的页面支付首先要配置微信公众号: 
微信支付–>开发配置–>支付授权目录(正式、测试的目录必须要不一样,否则有你好看的,) 
注意:设置授权目录的时候必须要精确到需要支付页面的目录文件夹; 
例子:需要支付的H5页面 http://xxxxx.com/test/html/pay/pay.html 
则授权目录配置为 http://xxxxx.com/test/html/pay/ 
配置完成后就可以发起下单了, 
后台下单代码示例:

public StatusResult<Map<String, String>> getJSSDKPayInfo(HttpServletResponse response,HttpServletRequest request) {StatusResult<Map<String, String>> result = null;String spbill_create_ip = request.getRemoteAddr();//订单生成的机器 IPMap<String, String> map = new HashMap<String, String>();    WxMpConfigStorage wx= wxMpService.getWxMpConfigStorage();WxPayUnifiedOrderRequest prepayInfo = new WxPayUnifiedOrderRequest();//TODO change all request parameters to a VO classprepayInfo.setOpenid("openId");        prepayInfo.setOutTradeNo("out_trade_no");//设置订单商户号int total_fee = 0.01 * 100;total_fee = 1;prepayInfo.setTotalFee(Integer.valueOf(total_fee));//设置支付金额 单位为分 prepayInfo.setBody("xxxxx");//支付的内容简介prepayInfo.setTradeType("JSAPI");//渠道:公众号支付prepayInfo.setSpbillCreateIp(spbill_create_ip);//终端ip //TODO(user) 填写通知回调地址prepayInfo.setNotifyURL(wx.getNotifyURL());try {两种下单方式,如果报错请先仔细检查微信配置的各种参数//WxPayUnifiedOrderResult  wxPayUnifiedOrderResult= wxMpService.getPayService().unifiedOrder(prepayInfo);Map<String, String> payInfo = this.wxMpService.getPayService().getPayInfo(prepayInfo);if(payInfo != null){//业务代码}result = StatusResult.success(payInfo);return result;} catch (WxErrorException e) {log.error(e.getError().toString());map.put("error", e.getError().toString());return StatusResult.failed("微信下单失败",map);}}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

H5页面支付js代码(需要引入微信js哈):

function callPay(){if (typeof WeixinJSBridge == "undefined"){if( document.addEventListener ){document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);}else if (document.attachEvent){document.attachEvent('WeixinJSBridgeReady', onBridgeReady); document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);}}else{onBridgeReady();}       }function onBridgeReady(){WeixinJSBridge.invoke('getBrandWCPayRequest', {"appId":appId,     //公众号名称,由商户传入     "timeStamp":timeStamp,         //时间戳,自1970年以来的秒数     "nonceStr":nonceStr, //随机串     "package":package,     "signType":"MD5",         //微信签名方式:     "paySign":paySign //微信签名 },function(res){     if (res.err_msg == "get_brand_wcpay_request:ok") {    alert("微信支付成功!");} else if (res.err_msg == "get_brand_wcpay_request:cancel") {    alert("用户取消支付!");} else {  alert("支付失败!");}     // 使用以上方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回    ok,但并不保证它绝对可靠。 }); }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

微信回调后台通知接口代码示例:

 public void getJSSDKCallbackData(HttpServletRequest request,HttpServletResponse response) {try {synchronized (this) {Map<String, String> kvm = XMLUtil.parseRequestXmlToMap(request);System.out.println("微信通知返回结果:\t"+kvm.toString());WxPayOrderQueryResult  wxPayOrderQueryResult = wxMpService.getPayService().queryOrder("", kvm.get("out_trade_no"));//用订单号去查询订单状态,冗余代码可看可删
//                if (this.wxMpService.getPayService().checkSign(kvm,  kvm.get("sign"))) {System.out.println("查询订单返回结果:\t"+wxPayOrderQueryResult.getTradeState());if ("SUCCESS".equals(wxPayOrderQueryResult.getTradeState())) {if (kvm.get("result_code").equals("SUCCESS")) {//TODO(user) 微信服务器通知此回调接口支付成功后,通知给业务系统做处理log.info("out_trade_no: " + kvm.get("out_trade_no") + " pay SUCCESS!");String out_trade_no = kvm.get("out_trade_no"); //支付订单号,接下来写业务代码                       }}} log.info("已经支付的订单详情\t"+aleadyPayOrder);response.getWriter().write("<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[ok]]></return_msg></xml>");} else {log.error("out_trade_no: "+ kvm.get("out_trade_no") + " result_code is FAIL");response.getWriter().write("<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[result_code is FAIL]]></return_msg></xml>");}} else {response.getWriter().write("<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[check signature FAIL]]></return_msg></xml>");log.error("out_trade_no: " + kvm.get("out_trade_no")+ " check signature FAIL");}}} catch (Exception e) {e.printStackTrace();}}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

到此为止公众号支付完成。

三、微信js中接口使用 
分享等很常见的,需要初始化微信的js,需要利用到上面写的createJsapiSignature后台接口。 
公众号的分享给朋友、朋友圈、QQ空间等方法在微信js中是可以直接调用的,分享的内容可以自己改变的,但是分享出去的按钮只能是微信右上角的分享,开发者不能自定义分享按钮。。。这一点让人非常不爽。 
H5页面js的代码示例:

引入微信的js,然后初始化,然后微信会自动执行wx.ready中的方法

wx.config({debug: false,   //开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。  appId: appId,   //必填,公众号的唯一标识timestamp: timestamp,   // 必填,生成签名的时间戳 nonceStr: nonceStr,   //必填,生成签名的随机串 signature: signature,   // 必填,签名jsApiList: [//需要多少接口就写多少接口'checkJsApi',//判断当前客户端是否支持指定JS接口'onMenuShareAppMessage'//获取“分享给朋友”按钮点击状态及自定义分享内容接口] //必填,需要使用的JS接口列表,所有JS接口列表 
}); 
wx.ready(function () {  var title = "xxxx";var desc = "xxxx";var imgUrl = "http://xxx.com/test/picture/xxxxx.png";wx.onMenuShareAppMessage({title: title, // 分享标题desc: desc, // 分享描述link: url, // 分享链接,h5网页的地址或者其它imgUrl: imgUrl,trigger: function(res) {alert('用户点击发送给朋友');},success: function(res) {alert('已分享');},cancel: function(res) {alert('已取消');},fail: function(res) {alert(JSON.stringify(res));}});
}); 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

调用微信js中的方法流程: 
初始化config–>执行wx.ready 
开发者需要更多的功能就依照葫芦画瓢了,或者去微信js sdk文档去copy方法了。

让人不愉快的事情又发生了,微信在4月29日开始限制自定义分享的链接啦,必须要是安全域名下的链接才可以分享。 
详情请看: 
JSSDK自定义分享接口的策略调整 
这样导致不能直接分享自己想要的链接了,但是解决方法还是有的: 
在你的域名下新建一个H5页面,在这个H5页面的js代码中做一个跳转就好啦(但是如果你分享出去的是支付页面,那多半是支付不了地)!

四、处理微信直接可以分享页面问题 
有时候业务需要不能把当前的页面分享出去,但是微信自带的分享、复制链接按钮是可以在任何页面拿到当前页面的地址,如果别人点击就会进入。为了避免这个情况发生,有几种处理方法: 
1.后端足够强大,页面跳转完全由后端完成,在加入了权限验证的情况下就不怕这个的,后端会拦截请求验证,验证不过就跳指定的error页面就好。 
2.前端做验证 
jsp可以用session,判断session中的一个全局参数即可。 
H5可以使用cookie,在项目的开始页写入cookie,在js中写一个验证方法,每个页面都调用这个验证方法进行验证,虽然有冗余代码,但是这个是可以实现地,简单粗暴,速度快。 
设置cookie的方法:

jquery(function() {var expiresDate= new Date();expiresDate.setTime(expiresDate.getTime() + (30 * 60 * 1000));//半小时jquery.cookie("openId",'${openId}', {path : '/',//cookie的作用域为根目录,任何页面都是有效的expires : expiresDate});//cookie里面保存openId
});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

然后在js中写一个方法每个页面都调用判断。


http://chatgpt.dhexx.cn/article/aIXAw0pd.shtml

相关文章

微信H5开发 总结一

文档&#xff1a; 概述 | 微信开放文档 注意事项&#xff1a; 微信JSSDK 概述 | 微信开放文档 微信jssdk就是相对于小程序提供的api一样 小程序也是基于这个jssdk来开发的而已&#xff0c; jssdk 就是 jsbridge&#xff0c;在原生端暴露接口&#xff0c;js调原生端接口&am…

微信H5开发wx.config授权invalid signature

微信H5&#xff08;公众号&#xff09;开发过程中&#xff0c;遇到了wx.config失败的情况&#xff0c;造成的原因在此记录一下&#xff0c;也为各位提个醒。 打开wx.config的debug选项&#xff0c;会在配置后弹框提示配置结果&#xff0c;如果提示errMsg&#xff1a;config ok…

uniapp开发微信小程序/h5完整流程,含vant/uview(h5适配vw)

theme: smartblue highlight: dark 创建项目 创建后的项目 此处插入一个坑 亦可以使用uniapp vue-cli 创建项目 vue create -p dcloudio/uni-preset-vue my-project 使用vue3/vite 创建项目&#xff08;如命令行创建失败&#xff0c;请直接访问 gitee 下载模板&#xff0…

微信H5页面前端开发,大多数人都会遇到的几个兼容性坑

最近给公司微信公众号&#xff0c;写了微信h5业务页面&#xff0c;总结分享一下前端开发过程中的几个兼容性坑&#xff0c;项目直接拿的公司页面&#xff0c;所以下文涉及图片都模糊处理了。 1、ios端兼容input光标高度 问题详情描述&#xff1a;input输入框光标&#xff0c;…

企业微信h5开发(即JS-SDK),一不小心,就会掉进坑,进入死胡同

最近在开发企业微信的业务&#xff0c;可以借此机会学习到企业微信的开发&#xff0c;这让我非常开心、激动。殊不知&#xff0c;企业微信的开发让我很头疼&#xff0c;遇到了非常多的坑。在这里我记录一下&#xff0c;希望大家不要像我一样掉进坑里面。 一、wx.agentConfig方法…

微信H5页面前端开发,大多数人都会遇到的几个兼容性坑(转载)

1、ios端兼容input光标高度 问题详情描述&#xff1a;input输入框光标&#xff0c;在安卓手机上显示没有问题&#xff0c;但是在苹果手机上 当点击输入的时候&#xff0c;光标的高度和父盒子的高度一样。例如下图&#xff0c;左图是正常所期待的输入框光标&#xff0c;右边是io…

微信H5开发(二)

这篇主要讲解微信H5 常用到的微信模块和微信文件的引入及微信公众号、微信商务平台、微信开放平台的相关配置。 第一次使用微信开发文档的时候&#xff0c;感觉文档里面写的内容不算太难&#xff0c;但在实际开发中会碰到很多预想不到的问题。 微信开放平台、微信商务平台 有…

H5微信网页开发总结(授权,分享,地图)

H5微信网页开发总结&#xff08;网页授权&#xff0c;JS-SDK分享、地图&#xff09; 目录&#xff1a; 网页授权分享地图 参考文档https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html 一&#xff1a;网页授权 目的&#xff1…

微信H5开发(一)

H5开发&#xff0c;一般是指移动端的页面开发。移动端可分为app和普通浏览页面。从嵌入的环境来归类&#xff1a;可以分为app、微信H5及手机浏览器里面打开的页面。 以前粗略的涉略过h5开发的一些知识&#xff0c;感觉H5并不是很难。在这半年内&#xff0c;接手并完成了两个微…

app推广渠道数据统计Xintall

APP推广时需要统计不同渠道带来的用户量&#xff0c;这个怎么做到 我们在做一款app推广的时后&#xff0c;经常会遇到一个问题&#xff0c;比如你花了一大笔预算去给自家开发的App做广告推广&#xff0c;却无法得知不同的广告素材、不同的广告位、不同的推广平台&#xff0c;各…

还在为推广发愁?这里有一份活动推广渠道清单请查收

对于运营来说,用户量和收入是两个最关键的指标。我们希望更多的用户留在我们的产品中,新用户的留存更高,老用户也拥有较高的活跃度,用户量起来了,收入的提升也变的容易了许多。而用户分为新用户和老用户,本文列举了针对老用户推广渠道,以游戏行业为例,其他行业可以触类…

浅谈游戏系统

浅谈游戏系统 某日&#xff0c;Brandon突发奇想&#xff08;脑子抽了&#xff09;买了《异度之刃2》开始游玩&#xff0c;虽然画质不如原神&#xff0c;但他还是沉下心来连续游玩了10个小时。”这游戏战斗系统怎么样&#xff1f;“ 舍友随口一问瞬间让Brandon摸不着头脑&#x…

App全渠道推广统计方案

做过 App 运营岗位&#xff0c;肯定提过类似的需求&#xff1a; 自然新增渠道&#xff1a;自然新增的用户&#xff0c;想知道他们都是从哪下载了 App&#xff0c;以为初步分析下载原因&#xff0c;好在后续提供个性化推荐等服务。H5 推广渠道&#xff1a;开展活动需要分发大量…

浅析APP应用内及新媒体类推广渠道

之前我写了一篇关于APP用户数据分析的文章&#xff0c;提到过用户来源的问题。APP的下载注册用户来自线上线下各种渠道&#xff0c;可能是在某个常逛的网站上看到APP投放的广告产生了兴趣&#xff1b;也有可能是在朋友圈看到了朋友转的APP活动链接从而被吸引…… 这些都是通过…

app推广渠道数据统计

APP推广时需要统计不同渠道带来的用户量&#xff0c;这个怎么做到 我们在做一款app推广的时后&#xff0c;经常会遇到一个问题&#xff0c;比如你花了一大笔预算去给自家开发的App做广告推广&#xff0c;却无法得知不同的广告素材、不同的广告位、不同的推广平台&#xff0c;各…

抖音最常见的付费与免费推广渠道有哪些?3+6推广技巧干货!丨国仁网络

直播作为全新的互动传播方式,带来了互联网全新盛会的同时,也开启了企业新兴传播媒介——直播营销。直播营销为企业带来更全面的潜在客户,帮助企业更好营销。 然而,在互联网营销中,任何营销方式和工具模式,都需要推广,否则直播内容再好、主播再有颜值优势,其营销效果也会…

推广渠道如何分析?

【面试题】 有两个Excel表是A、B两个渠道推广导出的玩家用户明细数据&#xff0c;自选分析角度&#xff0c;产出数据分析报告。&#xff08;某游戏公司面试题&#xff09; 渠道A的玩家 渠道B的玩家 【参考答案】 1.分析思路 研究推广渠道A与B的的推广效果&#xff0c;以及渠道用…

渠道触点归因、推广来源追踪

消费者触点 消费者与企业的产品或服务、品牌、内容或信息发生接触的任意位置。触点作为用户获取来源叫渠道。 触点归因 研究如何获客贡献在参与的各个触点或渠道间进行分配的过程。 归因作用 客观评价触点或渠道的价值与贡献&#xff0c;尤其是发现那些被埋没的真相&#xf…

如何提升游戏吸引力——选对推广渠道就是成功的一半

2017全年,我国网络游戏营收约为2011亿元,而手游占据了55.8%的份额,全年营业收入约为1122.1亿元,同比增长38.5%。尽管移动游戏进入存量市场阶段,巨大的市场规模,仍吸引着手游开发商下场瓜分蛋糕。 然而,仅仅半年时间,国内手游市场的风向就一变再变。MOBA和“吃鸡”你方…

怎么做好游戏推广运营

游戏推广有两大类方法&#xff1a;一种是推&#xff0c;一种是引&#xff1b;前者可以快速见效&#xff0c;所以绝大多数进入游戏行业的人首选想到的是如何去找玩家&#xff0c;发链接&#xff0c;推游戏&#xff1b;但是&#xff0c;这种做法在先天上存在不足之处&#xff0c;…