开发者社区 问答 正文

应用研发平台EMAS设备通道打开的情况下辅助弹窗没收到反应,怎么排查问题?

应用研发平台EMAS设备通道打开的情况下辅助弹窗没收到反应,怎么排查问题?cf8691f13bd250ecfbbc731a0e1f332a.png
flutter和原生交互代码也写了

展开
收起
真的很搞笑 2024-04-11 08:39:05 77 分享 版权
阿里云 AI 助理回答

问题排查步骤

在应用研发平台EMAS中,如果设备通道打开的情况下辅助弹窗没有收到反应,可能是由于客户端或服务端配置问题导致的。以下是详细的排查步骤和解决方案:


1. 检查客户端配置

确保客户端已正确集成并注册辅助弹窗Activity。

  • 辅助弹窗Activity注册
    AndroidManifest.xml文件中,确认已正确注册自定义实现的辅助弹窗Activity,并设置android:exported="true"

    <activity
      android:name="辅助弹窗Activity的全限定类名"
      android:exported="true">
      <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>
    

    注意android:exported="true"是必须配置的,否则可能导致无法接收通知。

  • 辅助弹窗回调实现
    确保辅助弹窗Activity继承了AndroidPopupActivity,并重写了onSysNoticeOpened方法以处理通知点击事件:

    @Override
    protected void onSysNoticeOpened(String title, String content, Map<String, String> extraMap) {
      Log.d("OnSysNoticeOpened", "title: " + title + ", content: " + content + ", extraMap: " + extraMap);
    }
    
  • Flutter与原生交互代码检查
    如果使用Flutter开发,确保Flutter与原生代码之间的交互逻辑正确,例如通过MethodChannel调用原生方法时,参数传递无误。


2. 检查服务端配置

服务端推送时需要正确配置辅助弹窗相关参数。

  • OpenAPI推送配置
    使用OpenAPI进行推送时,需设置以下参数:

    • AndroidPopupActivity:指定辅助弹窗打开的Activity。
    • AndroidPopupTitle:设置辅助弹窗通知标题。
    • AndroidPopupBody:设置辅助弹窗通知内容。
    • StoreOffline:设置为true,以支持离线消息存储。

    示例代码:

    PushRequest pushRequest = new PushRequest();
    // 设置推送类型为通知
    pushRequest.setPushType("NOTICE");
    // 设置普通通知标题和内容
    pushRequest.setTitle("hello");
    pushRequest.setBody("PushRequest body");
    // 设置辅助弹窗参数
    pushRequest.setAndroidPopupActivity("com.alibaba.push.testdemo.SecondActivity");
    pushRequest.setAndroidPopupTitle("hello2");
    pushRequest.setAndroidPopupBody("PushRequest body2");
    // 设置离线存储
    pushRequest.setStoreOffline(true);
    
  • 阿里云控制台推送配置
    如果使用阿里云控制台进行推送,在高级设置中填写厂商通道必要参数,包括辅助弹窗的Activity、标题和内容。


3. 检查设备状态

辅助弹窗仅在特定条件下生效,需确认设备状态是否符合要求。

  • 辅助弹窗生效条件
    辅助弹窗仅在以下情况下生效:

    • 当前设备接入了厂商通道(如华为、小米等)。
    • 应用后台进程被清理后,设备处于离线状态。

    注意:对于非接入厂商通道的设备或在线设备,辅助弹窗不会生效。

  • 日志调试
    开启SDK日志,查看设备是否成功注册厂商通道:

    CloudPushService pushService = PushServiceFactory.getCloudPushService();
    pushService.setLogLevel(CloudPushService.LOG_DEBUG);
    

    如果日志显示厂商通道初始化失败,请检查证书配置是否正确。


4. 常见问题排查

根据知识库中的常见问题,逐一排查可能的原因:

  • 问题1:辅助弹窗启动报解析body异常
    确保服务端推送的AndroidPopupBody内容格式正确,避免特殊字符或过长内容导致解析失败。

  • 问题2:单击通知无法打开相应Activity
    检查AndroidPopupActivity是否正确配置,并确保Activity的onSysNoticeOpened方法已实现。

  • 问题3:厂商通道未生效
    确认服务端推送时是否设置了厂商通道必要参数。若未设置,推送将不会通过厂商通道发送。


5. 联系技术支持

如果上述步骤仍未能解决问题,可以通过以下方式联系技术支持:

  • 提交工单
    提交工单时,请提供以下信息:

    • AppKey
    • MessageID
    • DeviceID
  • 加入钉钉群咨询
    钉钉群号:35248489


总结

通过以上步骤,您可以逐步排查并解决辅助弹窗未收到反应的问题。重点在于确保客户端和服务端配置正确,同时验证设备状态是否符合辅助弹窗的生效条件。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
收录在圈子:
基于阿里巴巴以及合作伙伴的最佳实践,围绕大前端、云原生领域的相关技术热点(小程序、Serverless、应用中间件、低代码、DevOps)展开行业探讨,与开发者一起探寻云原生时代应用研发的新范式。
还有其他疑问?
咨询AI助理