用户反馈demo

萝卜白菜紫茄子 发布于 2015/05/22 15:20
阅读 544
收藏 0
用户反馈是移动开发中最常见的功能,可以用来收集我们的用户对软件的意见和建议。通常在开发用户反馈功能时,我们都会将用户反馈的信息保存到服务器中,定 期登录后台管理系统查看,这样很难做到实时查看用户反馈信息。本文结合Bmob推送服务和数据存储服务开发用户反馈功能,实现用户提交反馈信息保存在 Bmob云数据库的同时,也将用户的反馈信息推送到运营/研发人员的设备中。

这个demo将使用到 Bmob的如下功能:

1、    推送服务 : 将用户的反馈信息实时推送到订阅了接收反馈信息的设备中,实现端到端的消息传递。

2、   数据存储服务 :添加和查看反馈信息,使用到了添加、查询和按时间排序的功能。

发送反馈功能:

这里要实现的是当用户点击“发送”反馈按钮之后,先把用户的反馈信息上传到Bmob云数据库中,然后发送一条推送信息到Installation表中 isDeveloper为true的设备中去。为实现将数据保存到云数据库的功能,你首先需要先创建一个Feedback类(需要与刚刚创建的数据表 Feedback名称对应一致),该类继承自BmobObject类,实现contact和content的set和get方法。实现代码如下:

public class Feedback extends BmobObject {
        //反馈内容
        private String content;
        //联系方式
        private String contacts;
        public String getContent() {
            return content;
        }
        public void setContent(String content) {
            this.content = content;
        }
        public String getContacts() {
            return contacts;
        }
        public void setContacts(String contacts) {
            this.contacts = contacts;
        }
    }
有了Feedback类,你就可以方便的通过BmobObject的insertObject方法操作云数据库,将数据保存上去了。实现代码如下:
/**
         * 保存反馈信息到Bmob云数据库中
         * @param msg 反馈信息
         */
        private void saveFeedbackMsg(String msg){
            Feedback feedback = new Feedback();
            feedback.setContent(msg);
            feedback.save(this, new SaveListener() {

                @Override
                public void onSuccess() {
                    Log.i("bmob", "反馈信息已保存到服务器");
                    //发送推送信息
                    saveFeedbackMsg(message);
                }

                @Override
                public void onFailure(int code, String arg0) {
                    // TODO Auto-generated method stub
                    Log.e("bmob", "保存反馈信息失败:"+arg0);
                }
            });
        }
/**
         * 推送反馈信息给isDeveloper的设备
         * @param message 反馈信息
         */
        private void sendMessage(String message){
            BmobPushManager bmobPush = new BmobPushManager(this);
            BmobQuery<BmobInstallation> query = BmobInstallation.getQuery();
            query.addWhereEqualTo("isDeveloper", true);
            bmobPush.setQuery(query);
            bmobPush.pushMessage(message);
        }
查看反馈功能:


为了接收用户端推送过来的反馈信息,查看反馈端需要自定义一个继承自BmobPushMessageReceiver的类,用于处理接收到的推送信息。实现代码如下:

public class MyMessageReceiver extends BmobPushMessageReceiver {

    @Override
    public void onMessage(Context context, String message) {
        Log.d("bmob", "收到反馈消息 = "+message);
        //通知栏显示收到的反馈信息
        NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        Notification n = new Notification();  
        n.icon = R.drawable.ic_launcher;  
        n.tickerText = "收到反馈消息";  
        n.when = System.currentTimeMillis();  
        Intent intent = new Intent(context, ActFeedbackList.class);  
        PendingIntent pi = PendingIntent.getActivity(context, 0, intent, 0);  
        n.setLatestEventInfo(context, "消息", message, pi);  
        n.defaults |= Notification.DEFAULT_SOUND;
        n.flags = Notification.FLAG_AUTO_CANCEL;
        nm.notify(1, n);
    }
}

代码运行截图:


完整的demo可以到这里下载:

http://www.bmob.cn/spread/redirect/?sid=3ddb1cab014eb510ce89

加载中
返回顶部
顶部