当前位置: 首页 > news >正文

firebase 云通知功能使用。有独立的demo可用,还有测试工具。

资源在:https://download.csdn.net/download/qq_38998213/10478112。这里面包括项目 和测试工具,想要的私聊我就行,下载还得1积分,设的最低,感觉应该不设这个东西。

1.首先你的有firebase账号,进行登录,一般用gmail邮箱进行注册。网址如下:https://console.firebase.google.com/

2.添加你的应用到Firebase,需要你的包名等,如下图:

最后你会得到一个google-services.json文件,复制到app目录中。

3.在android studio中 与firebase进行连接,点击Android studio 的Tools,Firebase,会打开一个Firebase窗口:点Clude Messageing 目录心爱的set up如下图:


按照步骤123:,进行操作,如下图:


在连接时需要你写两个服务,在Firebase发出消息时你能接到消息,类我已经写好了,直接就能用:

首先你导包:

compile 'com.google.firebase:firebase-config:11.0.4'


// firebase 核心库
compile 'com.google.firebase:firebase-core:11.0.4'
compile 'com.google.firebase:firebase-messaging:11.0.4'                                   

两个服务如下:

public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {
    private static final String TAG = "MyFirebaseIIDService";

    @Override
    public void onCreate() {
        super.onCreate();
        FirebaseMessaging.getInstance().subscribeToTopic("CallBlackTimingDialog");
        FirebaseMessaging.getInstance().subscribeToTopic("CallBlackTimingDialog_2");
    }

    @Override
    public void onTokenRefresh() {
        String refreshedToken = FirebaseInstanceId.getInstance().getToken();
        Log.e("AAA", "Refreshedtoken:" + refreshedToken);
        sendRegistrationToServer(refreshedToken);
    }

    private void sendRegistrationToServer(String token) {
        // TODO: Implement this method to send token to your app server.
        Firebase.getInstance(this).logEvent("user_id", token);
    }

}

其中:

FirebaseMessaging.getInstance().subscribeToTopic("CallBlackTimingDialog");

这是关键字,作为识别你的应用的地方,在发云消息的命令中会用到这个关键字。

public class MyFirebaseMessagingService extends FirebaseMessagingService {


    @Override
    public void onCreate() {
        super.onCreate();
    }

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        System.out.println("MyFirebaseMessagingService.onMessageReceived------->"+remoteMessage.getFrom());
        //  加主题判断
        String from = remoteMessage.getFrom();
        //  弹出弹窗
        if (from != null && !from.equals("")) {
            if (from.equals("/topics/CallBlackTimingDialog")) {
                Map<String, String> data = remoteMessage.getData();
                if (data != null) {
                    String title = data.get("notificationTitle");
                    String message = data.get("notificationMessage");
                    String content = data.get("notificationContent");
                    String imageUrl = data.get("notificationUrl");

                    Intent intent = new Intent(MyFirebaseMessagingService.this,
                            DialThemeDialogActivity.class);
                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    intent.putExtra("notificationUrl", imageUrl);
                    startActivity(intent);
                    Firebase.getInstance(this).logEvent("云弹窗", "接收到云弹窗");
                }
                String Token = FirebaseInstanceId.getInstance().getToken();
                Firebase.getInstance(this).logEvent("user_id", Token);
            } else if (from.equals("/topics/CallBlackTimingDialog_2")) {
                Map<String, String> data = remoteMessage.getData();

                if (data != null) {
                    String title = data.get("notificationTitle");
                    String message = data.get("notificationMessage");
                    String url = data.get("notificationUrl");
                    Log.e("onMessageReceived",title+"==========="+message+"================"+url);
                    Intent intent = new Intent(MyFirebaseMessagingService.this,
                            PushNewThemeActivity_2.class);
                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    intent.putExtra("notificationUrl", url);
                    startActivity(intent);
                }

                String Token = FirebaseInstanceId.getInstance().getToken();
                Firebase.getInstance(this).logEvent("user_id", Token);
            }
        }
    }
}

在上面这个服务中,会根据关键字进行判断,当你的app有多个云弹窗就需要进行判断收到的是哪个弹窗。进行判断后,弹出。

这就是全部的步骤。


下面面进行测试英道的工具PuTTY,这个工具我会进行上传,在这个工具中进行登录,并且输入命令,我对于这个还没有很好的理解,具体的原理不理解,只是会用,以后理解了里面的原理,为会在写下来的,有理解原理的麻烦留言给我讲讲。我的测试命令是:curl --header "Authorization: key=AAAAce1g-zA:APA91bG-viW-83nGsh_Ly5c7kCeH4gek5R_MCIG-LPWL3_xrdzvLfZIFFOqKqgSYEzDANGVux5C0BR2s5SiDz9jY9R2gh6GUYXmztwxpFwwNzaOMa4miKGKdZ0y3NvjgLhJkYwlKEJ_L" --header Content-Type:"application/json" https://fcm.googleapis.com/fcm/send -d "{\"to\":\"/topics/CallBlackTimingDialog\", \"priority\":\"high\", \"data\": {\"notificationTitle\":\"\",\"\":\"n\",\"notificationMessage\":\"\",\"notificationContent\":\"\",\"notificationUrl\":\"\"}}"

其中有个key:key=AAAAce1g-zA:APA91bG-viW-83nGsh_Ly5c7kCeH4gek5R_MCIG-LPWL3_xrdzvLfZIFFOqKqgSYEzDANGVux5C0BR2s5SiDz9jY9R2gh6GUYXmztwxpFwwNzaOMa4miKGKdZ0y3NvjgLhJkYwlKEJ_L, 这个如下图所示,获取的关键地方我都标注了:还有一个关键的地方:/topics/CallBlackTimingDialog\ ,这其中有一个关键字就是你的CallBlackTimingDialog写入server的。

这就是全部的 步骤。

资源在:https://download.csdn.net/download/qq_38998213/10478112。这里面包括项目 和测试工具,想要的私聊我就行,下载还得1积分,设的最低,感觉应该不设这个东西。

相关文章:

  • Unable to resolve dependency for ':app@debug/compileClasspath': Could not resolve com.android.suppo
  • 使用Android studio 的Translation Editor时出现字符不能输入的问题。解决。
  • INSTALL_FAILED_NO_MATCHING_ABIS错误的解决办法
  • viewpage 添加fragment 报错 viewpage demo LayoutInflater 自定义控件轮播图demo
  • [INSTALL_FAILED_TEST_ONLY],Android开发出现应用未安装
  • Caused by: java.lang.OutOfMemoryError: Failed to allocate a 29433932 byte allocation with 14683576 f
  • android 开发,开发完安装release包的时候出现应用未安装。以及怎样找到adb执行文件路径。
  • handler作为参数进行传递。 使用handler进行耗时操作。 onActivityResult,onActivityResult 使用
  • 使用relativelayout布局的坑。
  • 变色的textview,在同一个textview中设置不同的颜色。
  • RxBus的简单用例,很好用那个
  • recycleview 增加自定义头部和尾部
  • 如何生成Google-service.json 文件。
  • Error:Cannot change dependencies of configuration ':app:_debugAnnotationProcessor' after it has been
  • android 开发图标抖动效果使用
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • Angular2开发踩坑系列-生产环境编译
  • C学习-枚举(九)
  • Elasticsearch 参考指南(升级前重新索引)
  • emacs初体验
  • java中具有继承关系的类及其对象初始化顺序
  • laravel 用artisan创建自己的模板
  • PaddlePaddle-GitHub的正确打开姿势
  • Redis在Web项目中的应用与实践
  • ubuntu 下nginx安装 并支持https协议
  • vue.js框架原理浅析
  • Web Storage相关
  • 安卓应用性能调试和优化经验分享
  • 从0实现一个tiny react(三)生命周期
  • 翻译:Hystrix - How To Use
  • 简单数学运算程序(不定期更新)
  • 前端攻城师
  • 深度解析利用ES6进行Promise封装总结
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 微服务框架lagom
  • 正则表达式小结
  • k8s使用glusterfs实现动态持久化存储
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #### go map 底层结构 ####
  • #Java第九次作业--输入输出流和文件操作
  • #宝哥教你#查看jquery绑定的事件函数
  • #单片机(TB6600驱动42步进电机)
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (3)llvm ir转换过程
  • (C)一些题4
  • (TOJ2804)Even? Odd?
  • (安卓)跳转应用市场APP详情页的方式
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (二)丶RabbitMQ的六大核心
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (转)【Hibernate总结系列】使用举例
  • (转)编辑寄语:因为爱心,所以美丽
  • (转)大型网站的系统架构