开发者社区> 问答> 正文

想问下现在阿里推送EMAS,app的角标问题怎么处理的?Android的角标显示。

想问下现在阿里推送EMAS,app的角标问题怎么处理的?Android的角标显示。

展开
收起
真的很搞笑 2023-03-15 12:34:43 455 0
1 条回答
写回答
取消 提交回答
  • 随心分享,欢迎友善交流讨论:)

    阿里云推送EMAS提供了角标数字的设置方法供Android开发者使用,在推送通知时可以设置角标数字,具体步骤如下:

    在推送消息的payload中设置badge字段,如下所示: { "aps": { "alert": "Hello World!", "sound": "default", "badge":1 } } 在Android客户端中处理角标数字的显示。具体实现可参考阿里云推送EMAS Android SDK文档中的角标(Badge)设置部分,首先需要在应用的MainActivity中注册角标广播接收器,在接收器中实现角标数字的设定和显示: public class MainActivity extends Activity { private static final String TAG = MainActivity.class.getSimpleName();

    public static final String NOTIFICATION_RECEIVED_ACTION = "com.alibaba.push2.action.NOTIFICATION_RECEIVED"; public static final String EXTRA_NOTIFICATION_CONTENT = "com.alibaba.push2.NOTIFICATION_CONTENT";

    private int badgeCount =0; private TextView badgeView;

    @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);

    // 注册广播接收器 IntentFilter filter = new IntentFilter(); filter.addAction(NOTIFICATION_RECEIVED_ACTION); registerReceiver(notificationReceiver, filter);

    // 初始化角标数字 badgeCount = PushServiceFactory.getCloudPushService().getBadgeNumber(); badgeView = (TextView) findViewById(R.id.badge_view); setBadge(badgeCount); }

    /** * 角标广播接收器 */ private BroadcastReceiver notificationReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // 更新角标数字 badgeCount++; PushServiceFactory.getCloudPushService().setBadgeNumber(badgeCount); setBadge(badgeCount);

    // 处理通知内容 String content = intent.getStringExtra(EXTRA_NOTIFICATION_CONTENT); Log.d(TAG, "Received notification content: " + content); } };

    /** * 设置角标数字 */ private void setBadge(int count) { if (badgeView != null) { badgeView.setText(String.valueOf(count)); badgeView.setVisibility(count >0 ? View.VISIBLE : View.GONE); } }

    @Override protected void onDestroy() { // 取消广播接收器的注册 unregisterReceiver(notificationReceiver); super.onDestroy(); } }

    在接收到新的推送通知时,广播接收器会更新角标数字,并通过阿里云推送EMAS的CloudPushService.setBadgeNumber()方法将新的角标数字通知到服务端。同时,MainActivity中的setBadge()方法会更新显示角标数字的UI控件。需要注意的是,由于Android系统版本的差异,角标数字的显示方式也有所不同,具体实现可以根据不同的Android版本进行适配。

    2023-03-16 17:19:07
    赞同 展开评论 打赏
来源圈子
更多
收录在圈子:
基于阿里巴巴以及合作伙伴的最佳实践,围绕大前端、云原生领域的相关技术热点(小程序、Serverless、应用中间件、低代码、DevOps)展开行业探讨,与开发者一起探寻云原生时代应用研发的新范式。
相关文档: 移动研发平台
问答排行榜
最热
最新

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载