消息推送-自动集成的,厂商推送注册oppo的不成功问题
我的配置都没有问题,也能获取到token,oppo提示说注册失败,鸿蒙系统的设备,目前只有一台oppo设备,还没有使用其他设备,朋友们有遇到这个问题的吗?
应该是使用oppo-push:3.0.0版本时oppo-umengaccs库需要升级到1.0.8-fix,不能用1.0.7,需要引入'com.umeng.umsdk:oppo-umengaccs:1.0.8-fix',你可以试试
可以仔细排查一下接入流程,如果【1,OPPO通道集成】没有问题,直接看 【2、问题排查工具】。如果还是有问题,可以尝试跑一下官方Demo,示例 UPushSample
1、OPPO通道集成
创建应用
登录OPPO开放平台,选择推送服务,在推送服务中注册您的应用,在应用信息中获取AppKey和MasterSecret。

说明 开发者需在OPPO开放平台获取应用通知栏推送正式权限;测试权限无法推送正式消息
控制台配置密钥
在友盟+U-Push管理后台【设置】->【应用配置】填写Appkey和MasterSecret。
注意 MasterSecret字段很容易填写错误,需填写OPPO平台的MasterSecret
集成SDK
添加依赖
在app/build.gradle中添加依赖:
dependencies {
api 'com.umeng.umsdk:oppo-umengaccs:1.0.8-fix'
implementation 'com.umeng.umsdk:oppo-push:3.0.0'
}混淆配置
-keep public class * extends android.app.Service初始化
在Application类的onCreate()方法中初始化:
OppoRegister.register(this, appkey, appsecret);初始化成功验证
日志过滤 tag:OppoPush
注册成功后打印日志:onRegister regid=xxx
辅助弹窗
App进程退出后,可通过辅助弹窗(UmengNotifyClickActivity)接收推送消息:
public class MfrMessageActivity extends UmengNotifyClickActivity {
private static final String TAG = "MfrMessageActivity";
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(R.layout.activity_push);
}
@Override
public void onMessage(Intent intent) {
super.onMessage(intent);
Bundle bundle = intent.getExtras();
if (bundle != null) {
Log.d(TAG, "bundle: " + bundle);
}
String body = intent.getStringExtra(AgooConstants.MESSAGE_BODY);
Log.d(TAG, "body: " + body);
if (!TextUtils.isEmpty(body)) {
runOnUiThread(() -> ((TextView) findViewById(R.id.tv)).setText(body));
}
}
}
}在AndroidManifest.xml中注册MfrMessageActivity:
<activity
android:name="com.umeng.message.demo.mfr.MfrMessageActivity"
android:exported="true"
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="${applicationId}"
android:path="/thirdpush"
android:scheme="agoo" />
</intent-filter>
</activity>消息发送
在友盟+U-Push管理后台发送通知时,勾选厂商通道,并填写Activity类的完整路径(Activity需继承UmengNotifyClickActivity,例如:com.umeng.message.demo.mfr.MfrMessageActivity)。
说明 消息发送需服务端开发,也可通过友盟推送平台配置下发。
OPPO平台FAQ
OPPO平台的具体使用问题,可参考OPPO平台FAQ,点击了解
2、问题排查工具
U-Push工具所在位置
- 首先需要登陆管理后台
- 进入“设置”,分别有设备查询、别名查询、API在线校验工具
设备查询
作用:根据device_token查询该device_token 历史推送消息 和 标签
Android端查询
Device token在线状态查询列表:
- 在线:设备长连接在线
- 离线:消息创建时设备长连接不在线,若没有通过厂商通道成功下发,则终端用户需要等到下次App打开(长链接在线)才可收到消息
- 设备未注册:消息device token不正确,或者调用disable接口/设备已卸载应用
- 设备状态不存在:设备已卸载应用,或设备较长时间没有打开应用

消息查询展示最新50条历史消息,状态列表:
- 已受理:服务端已经接收到该设备推送请求
- 已送出:服务端已下发该设备但未收到客户端送达回执
- 已送达:客户端成功收到消息
- 已点击:客户端点击消息
- 已清除:用户手动忽略该消息
- 已过期:在消息有效期内,客户端没有收到消息
iOS端查询
消息状态展示最新50条历史消息,状态列表:
- success:成功投递到APNs
- fail:APNs返回失败,可查看失败原因,一般失败原因包括:
- bad device token:开发或生产环境错误/token无效
- unregister:设备不活跃
- device token not for topic:证书错误
别名查询
作用:根据alias_type和alias查询 该alias对应的device_token 以及device_token的 历史推送消息 和 标签

API在线校验工具
作用:检测通过api发送消息时的post body是否符合校验规则。
可校验内容:1. Appkey是否开通push服务;2.参数格式,详细参见文档API集成-集成示例附录J
不可校验内容:IP检查和签名
若校验失败,会有具体的错误信息;若校验成功,会有一些提示信息供参考。

注意区分OPPO的id和key,推送配置时,不是应用详情里的appid、appkey、appsecret、appserversecret,而是在推送服务-->消息推送-->消息推送运营平台(https://push.oppo.com/),登录后,配置管理-->应用配置去找mastersecret哦。
看看有没有使用最新版本的SDK?
首先试一下官方给的demo能不能跑通,然后再看看官方的集成文档,对比一下设置,再看看OPPO推送的版本。