|
/

消息推送-自动集成的,厂商推送注册oppo的不成功问题

M猫巷少女世博
发布于 5 年前
5106
消息推送 U-Push
SDK集成与升级

我的配置都没有问题,也能获取到token,oppo提示说注册失败,鸿蒙系统的设备,目前只有一台oppo设备,还没有使用其他设备,朋友们有遇到这个问题的吗?

5个回答
 
5 年前

应该是使用oppo-push:3.0.0版本时oppo-umengaccs库需要升级到1.0.8-fix,不能用1.0.7,需要引入'com.umeng.umsdk:oppo-umengaccs:1.0.8-fix',你可以试试

 
5 年前

可以仔细排查一下接入流程,如果【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工具所在位置

  1. 首先需要登陆管理后台
  2. 进入“设置”,分别有设备查询、别名查询、API在线校验工具


设备查询
作用:根据device_token查询该device_token 历史推送消息 和 标签

Android端查询
Device token在线状态查询列表:

  1. 在线:设备长连接在线
  2. 离线:消息创建时设备长连接不在线,若没有通过厂商通道成功下发,则终端用户需要等到下次App打开(长链接在线)才可收到消息
  3. 设备未注册:消息device token不正确,或者调用disable接口/设备已卸载应用
  4. 设备状态不存在:设备已卸载应用,或设备较长时间没有打开应用

消息查询展示最新50条历史消息,状态列表:

  1. 已受理:服务端已经接收到该设备推送请求
  2. 已送出:服务端已下发该设备但未收到客户端送达回执
  3. 已送达:客户端成功收到消息
  4. 已点击:客户端点击消息
  5. 已清除:用户手动忽略该消息
  6. 已过期:在消息有效期内,客户端没有收到消息


iOS端查询
消息状态展示最新50条历史消息,状态列表:

  1. success:成功投递到APNs
  2. 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检查和签名
若校验失败,会有具体的错误信息;若校验成功,会有一些提示信息供参考。


 
5 年前

注意区分OPPO的id和key,推送配置时,不是应用详情里的appid、appkey、appsecret、appserversecret,而是在推送服务-->消息推送-->消息推送运营平台(https://push.oppo.com/),登录后,配置管理-->应用配置去找mastersecret哦。

 
5 年前

看看有没有使用最新版本的SDK?

 
5 年前

首先试一下官方给的demo能不能跑通,然后再看看官方的集成文档,对比一下设置,再看看OPPO推送的版本。

Loading ...
登录社区,分享你的经验