java openApi 推送通知,设置了辅助弹窗,但是android APP还是无法收到离线通知,但是在控制台推送,离线就可以收到,这是为什么
终端集成确认
各通道初始化成功,可先在各厂商的控制台推送测试,然后再使用阿里云控制台或OpenAPI进行推送。 华为通道
华为通道初始化成功,如下图所示。有时没有注册信息上报,但只要注册成功,返回token就说明初始化成功。
huawei 小米通道
小米通道初始化成功,如下图所示。
xiaomi GCM/FCM通道
GCM/FCM通道初始化成功,可以看到以下日志信息:
05-19 19:18:44.530 19153-19177/com.xxx D/MPS:GcmRegister: token from register: eWIXLYCNP0Q:APA91bFUAgxj6XYf5okyoCBnRPw1UwITndzXrvPDgbdI2N44PYm17hFEBiNXNQJrJ8bOG_xjw3c3UPDAhzNMTLNjlAKcjUanKyLA6E3k4wEmgZuhgUT02UMmMvH2LVA1L2Z4-l-cT_Ug
OPPO通道
OPPO通道是否注册成功,可以通过过滤MPS:oppo关键字查看。注册成功会打印“onRegister regid=****”相关日志,注册失败请检查参数是否正确填入,阿里云控制台上需要填写OPPO的MasterSecret,而不是appsecret,找不到可以咨询OPPO客服。
如果targetSdkVersion设置成26及以上,那么使用OPPO通道时需要设置NotificationChannel,NotificationChannel的相关介绍请参见Android 8.0以上设备接收不到推送通知,OPPO需要在推送控制台创建一个通知渠道,NotificationChannel的id要填写正确,各处都需要统一。 VIVO通道
VIVO通道初始化成功,可以看到以下日志信息:
vivo 魅族通道
魅族通道初始化成功,可以看到以下日志信息:
说明:魅族控制台必须配置回执地址,详情请参见辅助通道接入文档。
meizu 检查辅助弹窗配置
接入推送辅助通道,确保您使用最新的辅助通道扩展包。查看当前设备是否支持辅助弹窗:
小米辅助弹窗:支持V2.3.0及以上版本
华为辅助弹窗:支持V3.0.8及以上版本
华为弹窗当前只支持EmotionUI 4.1及以上版本
指定打开的托管弹窗Activity,需要继承AndroidPopupActivity,并在AndroidManifest.xml中注册时需要声明属性android:exported=true。
import com.alibaba.sdk.android.push.AndroidPopupActivity; public class PopupPushActivity extends AndroidPopupActivity { static final String TAG = "PopupPushActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } /** * 实现通知打开回调方法,获取通知相关信息。 * @param title 标题 * @param summary 内容 * @param extMap 额外参数 */ @Override protected void onSysNoticeOpened(String title, String summary, Map<String, String> extMap) { Log.d("OnMiPushSysNoticeOpened, title: " + title + ", content: " + summary + ", extMap: " + extMap); } }
服务器端配置
注意:推送测试阶段建议不要使用全量推送,全量推送可能有统计新注册设备的延迟,容易误导用户。接入阶段建议按deviceID进行推送。
使用OpenAPI进行推送
检查服务器端是否设置了AndroidPopupActivity、AndroidPopupTitle和AndroidPopupBody三个参数,且storeOffline参数也需要设置为true,若推送的是消息类型,需要将AndroidRemind设置为true。
PushRequest pushRequest = new PushRequest(); // 其余设置省略 // 推送类别-通知 pushRequest.setPushType("NOTICE"); // 标题 pushRequest.setTitle(dateFormat.format(new Date())); // 内容 pushRequest.setBody("PushRequest body"); // 额外参数 pushRequest.setAndroidExtParameters("{"k1":"android","k2":"v2"}"); // 设置辅助弹窗打开Activity pushRequest.setAndroidPopupActivity(""); // 设置辅助弹窗通知标题 pushRequest.setAndroidPopupTitle(""); // 设置辅助弹窗通知内容 pushRequest.setAndroidPopupBody("*****"); // 设置离线存储 pushRequest.setStoreOffline(true);
使用阿里云控制台进行推送
登录移动研发平台EMAS,选择移动推送后选择对应的应用,单击推送通知或推送消息,然后单击高级设置(选填),设置辅助通道必要参数,如下图所示。
问题仍未解决
若上述步骤仍未能定位并解决问题,即在最后使用OpenAPI高级接口时还是无法推送到厂商设备,您可以通过以下方式咨询问题,咨询时请务必提供AppKey、messageID以及deviceID。
您可以提交工单,提交工单时请选择移动推送类目。
或者加入钉钉群咨询问题:
钉钉群号:30959784
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。