jpush / janalytics-react-native

MIT License
51 stars 21 forks source link

调用 setChannel 后,渠道新增数据不准确 #37

Closed xwartz closed 3 years ago

xwartz commented 5 years ago

渠道方案:

使用美团的 walle 打包方案,https://github.com/Meituan-Dianping/walle

重新步骤:

1 .AndroidManifest.xml 文件默认设置了一个 APP_CHANNEL,之后使用 walle 设置渠道信息

  1. App 启动的时候调用 setChannel 方法设置对应的渠道
  2. jpush 后台统计的新增用户数据减少严重,活跃用户数据看起来是正常的

相关代码片段

const setChannel = async () => {
  if (isiOS) return

  try {
    const channel = await WalletAPI.getChannel()
    JAnalyticsModule.setChannel({ channel })
  } catch (err) {
    console.log(err)
  }
}

initPush() {
    JPushModule.initPush()
    setChannel()
}

版本信息

"janalytics-react-native": "^1.2.0",
"jcore-react-native": "^1.3.0",
"jpush-react-native": "^2.5.0",
"react-native": "0.55.4",
xwartz commented 5 years ago

@huangminlinux @JoshLipan 帮忙看一下,谢谢

Lris12J commented 5 years ago

请说明「jpush 后台统计的新增用户数据减少严重」这个现象具体表现为什么?是你哪一个渠道的数据减少了,而默认渠道的增加了? 关于新增用户和其渠道的说明:https://community.jiguang.cn/t/topic/21737/12

xwartz commented 5 years ago

image

具体表现如上图,2.1 更新使用 setChannel 方法设置渠道后,除默认渠道,其他渠道数据骤降。 与应用商店后台下载量比较后,发现渠道数据远远小于应用商店的数据。

因为总体新增数据量在减少,所以看起来应该是默认渠道数据增加,但是其他渠道数据在减少。

xwartz commented 5 years ago

按照你上面新增用户和渠道说明,RegistrationID 不变不算新增。 initPush 方法是否会设置 RegistrationID?如果会设置,那就是用的 AndroidMainfest.xml 默认配置,导致后面调用 setChannel 无效? @Lris12J

Lris12J commented 5 years ago

registrationID 就是在初始化成功后取到的,init即初始化操作。根据上面的描述就是因为新增用户都被统计到了默认渠道导致的。

xwartz commented 5 years ago

但是按照你们的代码说明,setChannel 优先级比 AndroidMainfest.xml 配置的要高。

/**

  • Android Only
    • 动态配置channel,优先级比AndroidManifest里配置的高
    • @param {object} params = {
    • 'channel': String //希望配置的channel
    • } */ static setChannel(params) { JAnalyticsModule.setChannel(params); }

https://github.com/jpush/janalytics-react-native/blob/master/index.js#L138

JoshLipan commented 5 years ago

image setChannel 要在 init 前调用

xwartz commented 5 years ago

谢谢,我试一下,那文档上应该要强调一下

xwartz commented 5 years ago

更改 setChannel 在 init 之前,数据还是不准确,没有效果 @JoshLipan

JoshLipan commented 5 years ago

现在新增用户也是默认渠道吗

xwartz commented 5 years ago

应该还是默认渠道,因为数据没什么变化

Lris12J commented 5 years ago

你这重新测试的,是不是拿的原来的手机?registrationID 没有变化的?如果没有变化,他继续用的是以前的信息,因为他是之前注册的,而不是你修改后注册的,可以换一台新手机,或者将registrationID 信息清除掉后再测试 https://community.jiguang.cn/t/jpush/5145/25

xwartz commented 5 years ago

@Lris12J 我是更新应用商店渠道包的,应用商店后台每天下载量还挺大,理论极光后台统计的这个渠道上新增的数据会增加的。

JoshLipan commented 5 years ago

你应用的 MainApplication JAnalyticsInterface.init(this); 有去掉吗,这句会导致应用一启动就开始初始化统计(防止统计的遗漏)。如果你在RN层想动态设置渠道,应该把这里初始化去掉

xwartz commented 5 years ago

@JoshLipan 是的,没有调用 JAnalyticsInterface.init,只有 new JAnalyticsPackage(SHUTDOWN_TOAST, SHUTDOWN_LOG)

xwartz commented 5 years ago

@JoshLipan @Lris12J
请问能帮忙再排查一下问题吗

xwartz commented 5 years ago

Hey, 能帮忙再看一下这个问题吗?@JoshLipan

JoshLipan commented 5 years ago

在跟进,再次确认你是在 init 前调用的 setChannel。然后你美团打包设置的渠道有哪些? image

xwartz commented 5 years ago

@JoshLipan 是的,在 init 之前调用的 setChannel。

渠道有如下: direct googleplay yyb oppo xiaomi samsung

JoshLipan commented 5 years ago

仔细看了下你的代码,你方法调用的有问题吧,应该是键值对形式

var param = {
       channel : "oppo"
    };
JAnalyticsModule.setChannel(param)
xwartz commented 5 years ago

@JoshLipan

我的调用方法和你的一样,只是简写而已,不然接口也会报错的。

JoshLipan commented 5 years ago

hi,我看你动态设置渠道后并没有调用统计的初始化 ,而是推送的初始化。 更新插件到v1.4.0,在设置渠道后,推送初始化前,调用 setup 方法对统计进行初始化,看下是否解决你的问题。

xwartz commented 5 years ago

@JoshLipan 好的,我试一下

xwartz commented 5 years ago

更新之后,观察了最近几天数据,还是没有起作用 🌚

Lris12J commented 5 years ago

新版有优化,请再更新到最新版看下

xwartz commented 4 years ago

@Lris12J 升级到最新版本 1.4.4 后遇到问题

ion.java:15: 错误: 程序包cn.jpush.reactnativejanalytics不存在
import cn.jpush.reactnativejanalytics.JAnalyticsPackage;

https://github.com/jpush/janalytics-react-native/issues/56