【Andriod推送】VIVO和OPPO手机为什么都不提示?

你好,我集成了最新版的 avoscloud-android-sdk-v4.4.8,然后代码如下
在启动的application里
AVOSCloud.initialize(this, "appid,"appkey");
AVOSCloud.setDebugLogEnabled(true);

在Activity里这样

	// 设置默认打开的 Activity
    PushService.setDefaultPushCallback(this, TestActivity.class);
	
    // 保存 installation 到服务器
    AVInstallation.getCurrentInstallation().saveInBackground(new SaveCallback() {
      @Override
      public void done(AVException e) {
    	  String installationId = AVInstallation.getCurrentInstallation().getInstallationId();
    	  LogUtil.d("installationId "+installationId);
      }
    });

这样之后,在后台的_Installation表里能成功看到注册的信息了。

这样只会,我在后台的【在线发送】中推送了一条信息,然后再【推送记录】里也能看到“推送消息” 2,“成功消息”2

但是,我测试的两台手机OPPO R9S 和VIVO X9S 都没有推送提示 (当时我的app在后台,没有完全关闭)

是现在oppo和vivo对leancloud的推送不太支持,还是什么其他问题呢?

==================================================================

我又在小米2A上安装测试了一下,同样的应用,上面同样的操作,小米2A就能成功收到。

这就很奇怪了,是oppo和vivo对各种长连接多了什么特殊操作吗?不过他们也没有出自己家的push sdk,那在他们上面安装的什么微信,微博的推送是可以收到的啊,不知你们在做andriod sdk的时候,有没有在oppo和vivo的手机上做过测试呢?结果如何?

你好,我看有这么一条【只要注册时有条件不符合,SDK 会在日志中输出导致注册失败的原因,例如「register error, mainifest is incomplete」代表 manifest 未正确填写。如果注册成功,_Installation 表中的相关记录应该具有 vendor 这个字段并且不为空值。】

其中【具有 vendor 这个字段并且不为空值】这个vendor必须有值才证明接入正常?

vendor 有值的是混合推送的机型。

oppo 和 vivo 目前还不是。这两款品牌的收不到推送,有可能是 ROM 版本限制了 service。可以把你的应用加入「信用的应用」。

原来是vivo和oppo手机默认都会禁止通知,这样的话,用户几乎很少会手动去设置里,然后找到这个app,然后打开,这样就会导致这2个机型几乎收不到push。。。然后我研究了“糗事百科”的做法,他是会判断是否打开了通知,然后弹窗提示用户去打开,点击打开会进入下面这个页面,我找了好久,一直没找到vivo的这个打开设置页面的方法,不知道社区里有人研究过吗?感觉有这种方法引导用户去打开,比提高设备到达率有更直接的效果,毕竟如果默认是关闭的,即使集成再好的push sdk也是没用的。

可以在你的 APP 第一次启动,判断一下机型,如果是 vivo 和 oppo 手机就弹出一个可关闭的提示,告诉用户要哪里打开开关来接收推送。