安卓使用友盟推送问题总结

最近用了一下友盟的推送,遇到一些问题,做了一下总结.

总结

总结一

如何在未点击推送通知时处理一些操作.友盟文档中只给出了自定义消息和自定义通知栏动作的代码示例.其实在UmengMessageHandler回调中还有一个回调方法dealWithNotificationMessage用于处理这种情况,当然可以通过自定义消息来完成这个功能,手动去创建一个推送通知,但是这里偷个懒.代码如下:

// 友盟消息处理
UmengMessageHandler messageHandler = new     UmengMessageHandler() {
            @Override
            public void dealWithCustomMessage(final Context context, final UMessage msg) {
                // 自定义消息

            }

            @Override
            public void dealWithNotificationMessage(Context context, UMessage uMessage) {
                super.dealWithNotificationMessage(context, uMessage);
                // 收到消息时的回调方法(不点击通知也会走),自定义消息和通知都会走这个回调,可以在这个回调方法中做一些预处理

            }

        };

 // 自定义通知栏动作
UmengNotificationClickHandler notificationClickHandler = new UmengNotificationClickHandler() {
            @Override
            public void dealWithCustomAction(Context context, UMessage msg) {

            }
        };

总结二

如何清除掉推送消息.因为项目中带有用户体系,所有当用户退出登录或者被顶号,需要去清除掉之前收到的通知,为用户隐私做考虑.友盟文档中并没有提到这块,而且大概看了一下友盟封装的Notification(UmengMessageHandler类中),发送通知时的ID是随机数,代码如下:

// 随机数 
this.f = (new Random(System.nanoTime())).nextInt();
...
// 发送通知 
int var6 = this.f;
// 通知Manager
NotificationManager var5 = (NotificationManager)var1.getSystemService("notification");
var5.notify(var6, var2);

所以想要单个清除的话,就老老实实的完全自定义友盟的服务去处理,记录好notify的id,通过mNotificationManager.cancel(id)去完成需求;如果是之前提到的清除掉所有通知,则可以偷个懒,代码如下:

    /**
     * 取消通知
     *
     * @param context
     */
    public static void cancelNotify(Context context) {
        String ns = Context.NOTIFICATION_SERVICE;
        NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(ns);
        mNotificationManager.cancelAll();
    }

希望对遇到同样问题的童鞋有帮助,当然如果需求很复杂,就使用完全自定义去处理就可以,文章提到的也是比较偷懒的做法.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章