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

济南网站建设询问企优互联价低合肥建筑公司有哪些

济南网站建设询问企优互联价低,合肥建筑公司有哪些,自适应模板网站,北京网站建设公司排行榜1.FCM简介#xff1a;Firebase Cloud Messaging (FCM) 是一种跨平台消息传递解决方案#xff0c;可供您可靠地传递消息#xff0c;而且还是免费的服务。支持 Android#xff0c;IOS,Web,Flutter,Unity.消息类型可以使用 FCM 向客户端发送两种类型的消息#xff1a;通知消息…1.FCM简介Firebase Cloud Messaging (FCM) 是一种跨平台消息传递解决方案可供您可靠地传递消息而且还是免费的服务。支持 AndroidIOS,Web,Flutter,Unity.消息类型可以使用 FCM 向客户端发送两种类型的消息通知消息有时被称为“显示消息”。此类消息由 FCM SDK 自动处理。数据消息由客户端应用处理。通知消息包含一组用户可见的预定义键。与其相对数据消息只包含用户定义的自定义键值对。通知消息可以包含可选的数据载荷。两种消息类型的载荷上限均为 4000 个字节但从 Firebase 控制台发送消息时会强制执行 1024 个字符的限制。使用情景如何发送通知消息当客户端应用在后台运行时FCM SDK 会代表客户端应用向最终用户设备显示消息。如果应用在收到通知时正在前台运行应用的代码会决定行为。通知消息包含一组预定义的用户可见的键和一个由自定义键值对组成的可选的数据载荷。在可信环境例如 Cloud Functions 或应用服务器中使用 Admin SDK 或者 FCM 服务器协议设置 notification 键。可能包含可选的数据载荷。 一律可折叠。请参阅一些显示通知示例并发送请求载荷。使用 Notifications Composer输入消息文本、标题等然后发送。通过提供自定义数据添加可选的数据载荷。数据消息客户端应用负责处理数据消息。数据消息仅包含自定义键值对没有保留键名请参阅下文。在可信环境例如 Cloud Functions 或应用服务器中使用 Admin SDK 或者 FCM 服务器协议仅设置 data 键。通知消息如果要进行测试或者要开展营销、重新吸引用户可以使用 Firebase 控制台发送通知消息。Firebase 控制台提供基于分析的 A/B 测试可帮助优化和改进营销消息。如需使用 Admin SDK 或 FCM 协议以编程方式发送通知消息可使用通知消息中用户可见部分所必需的预定义键值对选项集来设置 notification 键。例如以下是即时通讯应用中的 JSON 格式的通知消息。用户可能会在设备上看到标题为“Portugal vs. Denmark”、文本为“great match!”的消息{message:{token:bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...,notification:{title:Portugal vs. Denmark,body:great match!}} }应用在后台运行时通知消息将被传递至通知面板。应用在前台运行时消息由回调函数处理。数据消息使用自定义键值对设置适当的键以将数据载荷发送至客户端应用。请确保未在自定义键值对中使用任何保留字词。保留字词包括“from”“notification”“message_type”或以“google”或“gcm”开头的任何字词。例如下方所示为上述同一即时通讯应用中的一条 JSON 格式的消息在此消息中信息封装在常用的 data 键中且客户端应用需要解读相应内容{message:{token:bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...,data:{Nick : Mario,body : great match!,Room : PortugalVSDenmark}} }2.FCM 架构概览: 通过上图架构可以看到可以发送FCM的平台 1开发中常用的项目服务端server端接入Firebase Admin SDK 2.客户端可以直接发送FCM 3.通过Firebase 操作台发送FCM3.生命周期流:注册设备以接收来自 FCM 的消息。客户端应用的实例注册以接收消息并获取唯一标识应用实例的注册令牌。发送和接收下行消息。发送消息。应用服务器向客户端应用发送消息消息会在 Notifications Composer 或受信任的环境中编写并且消息请求会被发送到 FCM 后端。FCM 后端接收消息请求生成消息 ID 和其他元数据并将其发送到平台特定的传输层。当设备在线时系统会通过平台特定的传输层将消息发送到设备。在设备上客户端应用会接收到消息或通知。4.客户端接入第 1 步创建 Firebase 项目 需要先创建一个要关联到 Android 应用的 Firebase 项目然后才能将 Firebase 添加到 Android 应用。请访问了解 Firebase 项目以了解详情。创建项目https://console.firebase.google.com/?hlzh-cn第 2 步在 Firebase 中注册您的应用如需在 Android 应用中使用 Firebase需要向 Firebase 项目注册的应用。注册应用的过程通常称为将应用“添加”到项目中。第 3 步添加 Firebase 配置文件下载 Firebase Android 配置文件 (google-services.json)然后将其添加到应用中点击下载 google-services.json 以获取 Firebase Android 配置文件。将配置文件移到应用的模块应用级根目录中。google-server.json:{project_info: {project_number: 200570714500,project_id: testproject-82da6,storage_bucket: testproject-82da6.appspot.com},client: [{client_info: {mobilesdk_app_id: 1:200570714500:android:31bd6c1683be9fb6a485d1,android_client_info: {package_name: com.test.project.android}},oauth_client: [{client_id: 200570714500-g7s70nmqogiviequmsegmuo49kf8knnb.apps.googleusercontent.com,client_type: 1,android_info: {package_name: com.test.project.android,certificate_hash: b0bd34f3447d5d63bf620ae01a5bb494759ee845}},{client_id: 200570714500-b9i97kadm6me2b2hb9e7l3cmsop63ajk.apps.googleusercontent.com,client_type: 3}],api_key: [{current_key: AIzaSyBys0WVyFocO8ulfPdqIWMKCPWvy1HlppY}],services: {appinvite_service: {other_platform_oauth_client: [{client_id: 200570714500-b9i97kadm6me2b2hb9e7l3cmsop63ajk.apps.googleusercontent.com,client_type: 3}]}}}],configuration_version: 1 } 放到项目中的位置放到项目的./app 目录下即可如果要区分debug or release 那就可以根据多渠道创建对应的文件夹下第 4 步将 Firebase SDK 添加到应用中buildscript {repositories {// Make sure that you have the following two repositoriesgoogle() // Googles Maven repositorymavenCentral() // Maven Central repository}dependencies {...// Add the dependency for the Google services Gradle pluginclasspath com.google.gms:google-services:4.3.15} }allprojects {...repositories {// Make sure that you have the following two repositoriesgoogle() // Googles Maven repositorymavenCentral() // Maven Central repository} } dependencies {implementation platform(com.google.firebase:firebase-bom:31.2.0)implementation com.google.firebase:firebase-analyticsimplementation com.google.firebase:firebase-authimplementation com.google.firebase:firebase-firestoreimplementation com.google.firebase:firebase-messaging }plugins {id com.android.application// Add the Google services Gradle pluginid com.google.gms.google-services... } 到此已经将Firebase sdk 引入到项目中了5. FCM项目中使用 5.1 首先创建一个类继承FirebaseMessagingService 实现onMessageReceived和 onNewToken方法class MessagingService : FirebaseMessagingService(), LifecycleObserver {/*** Called when message is received.** param remoteMessage Object representing the message received from Firebase Cloud Messaging.*/override fun onMessageReceived(remoteMessage: RemoteMessage) {if (remoteMessage null) {return}val remoteMessageMap: MapString, String remoteMessage.data;if (remoteMessageMap null || remoteMessageMap.isEmpty()) {return}val json JSON.toJSON(remoteMessageMap) as JSONObject}override fun onNewToken(token: String) {try {MyApplication.instance?.let {ApiClient.getApiService(it.sessionManager).postPushToken(PushTokenBody(token))}val param HashMapString, Any()param.put(fcm_registration_token, token)AppLog.setHeaderInfo(param)} catch (e: java.lang.Exception) {}} } onMessageReceived是监听推送的消息onNewToken是当有新的Firebase token 时的回调有新的 token 及时上传server由于FirebaseMessagingService 是一个 service 所以要在AndroidManifest中声明 serviceandroid:name.ui.notification.MessagingServiceandroid:exportedfalseintent-filteraction android:namecom.google.firebase.MESSAGING_EVENT //intent-filter/service5.2 启动APP时 获取firebase fcm token 上传server初次启动APP时FCM SDK 会为客户端应用实例生成一个注册令牌 (registration token)注意上面睡到 FirebaseMessagingService 并重写 onNewToken 来获取更新此token。fcm token 可能会在发生下列情况时更改应用在新设备上恢复用户卸载/重新安装应用用户清除应用数据。获取fcm tokenFirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task -if (!task.isSuccessful) {Log.w(TAG, Fetching FCM registration token failed, task.exception)returnOnCompleteListener}// Get new FCM registration tokenval token task.result// Log and toastval msg getString(R.string.msg_token_fmt, token)Log.d(TAG, msg)Toast.makeText(baseContext, msg, Toast.LENGTH_SHORT).show() })FirebaseMessaging.getInstance().getToken().addOnCompleteListener(new OnCompleteListenerString() {Overridepublic void onComplete(NonNull TaskString task) {if (!task.isSuccessful()) {Log.w(TAG, Fetching FCM registration token failed, task.getException());return;}// Get new FCM registration tokenString token task.getResult();// Log and toastString msg getString(R.string.msg_token_fmt, token);Log.d(TAG, msg);Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();}});6.使用 Firebase 控制台发送消息进行测试可以使用 Firebase 控制台中的 Notifications Composer 发送通知消息。尽管使用这种方法发送消息的灵活性或可伸缩性不及使用 Admin SDK 或 HTTP 和 XMPP 协议但它非常适合用于测试或者针对性较强的营销活动及用户互动。Firebase 控制台提供基于分析结果的 A/B Testing 测试可帮助优化和改进营销消息。从 Notifications Composer 发送通知消息时Google 以如下方式使用您在表单字段中输入的值用户细分和有效期等字段用于确定消息目标和传送选项。通知文字和自定义数据等字段以由键值对构成的载荷形式发送至客户端。这些字段会映射至使用 Message 对象时可用的键。例如在编辑器的自定义数据字段中输入的键值对是作为通知的 data 载荷处理的。其他字段直接映射至 notification 对象或平台专用通知配置中的键。请注意Notifications Composer 中的某些字段在使用 FCM API 时不可用。例如您可以根据应用版本、语言、浏览器类型、浏览器版本或用户属性来定位细分用户群而这些方法均无法通过服务器 API 来使用。Firebase 控制台向客户端发送的键有键控制台字段标签说明notification.title通知标题指示通知标题。notification.body通知文字指示通知正文。data自定义数据您定义的键值对。它们以数据载荷的形式传送至应用以进行处理。决定消息传送方式的键包括键控制台字段标签说明sound声音指示设备收到通知时要播放的声音。time_to_live有效期此参数指定设备离线后消息在 FCM 存储区中保留的时长以秒为单位。 如需了解详情请参阅设置消息的有效期。这样通过控制台发送的消息推送APP的onMessageReceived就能接收到该消息这个时候当APP杀死或者切后台时FCM SDK会直接走系统的notificaion.如果这个时候APP在activity status 收到push message 后就可以做独立的逻辑了7.使用 Firebase Admin SDK for FCM发送消息Admin FCM API 可处理后端身份验证工作同时便于发送消息和管理主题订阅。使用 Firebase Admin SDK可以执行以下操作向单个设备发送消息向主题和与一个或多个主题匹配的条件语句发送消息。为设备订阅和退订主题针对不同目标平台构建量身定制的消息载荷。Admin Node.js SDK 提供了用于向设备组发送消息的方法。使用Firebase Admin SDK 需要从Firebase 控制台获取json控制台-设置--项目设置--服务账号--生成新的秘钥拿到的admin sdk json 样式{type: service_account,project_id: testproject-82da6,private_key_id: 2dab734ab58df4f1b0898cde1e8c8b488ae3134d,private_key: -----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCy3HNgzSSUTG8r\ny7CulZZr7CdW70UEfL6dbla1b9lmxdIDWmMz/8tux8dSr7FKjvUhHjqF5R8Ua7b\nCySuvvwjhwHm9u9kC1bOmlOhzMMsfRCQqIFU5nPvq6KIrELwrIk6wpwXof46ns\nUhPrOv3AyEi1yeTlXipexsaQ1X45qPfCvAJea59DpbnObhtX0g5K5tp6IqwaXwg\ncXoUgTeQlkjG3f3Y5A/wNH2etAqzA299ixUyl/20hHyOY8wtTNj67ZgsW4bvufXF\n8y2vm4i2eIgV1uvHpPRBHcH5lV8PJH8Pgd3n9dXDSuKDaq/zc87DbPC9ybSovLA\nkTnzUZWDAgMBAAECggEAVhz/S87Y2rGGIL7b3OJWXrV/J0LhpsxsdZ2HD6m/MNTz\nTPv6oSlZx4dV9wBxymTTrlNAd/CdKxbFEjkK2H2QSCiENI45aDz9VqmA1NzcHry\nO8N1KSwfC3hqy4TyWqgtXsru5rUMoBqCcC4AOxPW0jdbkopOPqcLRgXoQZfDz6Zk\nhK2QhaIVbw2sHZZsCNYagRI7AlS6VDT9FnREj5HoeyNFiNCT6th7Am6mi040mI1\nJaAJ2OhvNyW4vQpaLjT8Dadgw4uU3yLt0wKtQJU83qNtgyiXnCNp4En7cd/f0A\nrovZVpvA5LpVzokq9nNTtrVEB1BmuxAyZnV/6IeQKBgQDtCX791LezaSHAuIgL\nTlwQjCnd4nzX2kYAACdfJMRHVuV2JcyHrV0ZICMX/hlqlyO9sP0Rs4gAfBtX2a\nerWzjT0OfhhJaTULY7nO/sXBNpsb/4LM4Ac6WNgqL20Qp7ekExs5/cUoWjhsEQK\notauuMvAhGSG/Kz1ALa5DmtQKBgQDBK4POi9w9h/FvlzKl6/1RSg1HAf3DyO\nsih1dcb/YkptFH460tns3zq9AZBX3DAQPjb0yL8uEfdRBVtnCwEASVbujgKYZz\ntsBkR6ZsPrBVsFP5bwvT6k7ioZgoQiriNwQkxrUa4Z9NdD/bWB6liEUp1f86vD03\noZ/bw2U2VwKBgCTvad5bmxRVuXCyUGCSoT3i2VM9y4RHkbSvq2je1HvCO1cqHMUu\ni8/LsCfvVqHsPBMUyJm6V6eCK7M/eIbtwApuY6kydM5bmmxf6cAbau0keR7vvY33\nCqlI1/M22KPTvoXOhFuQ83vKMyiDrgpuq60mFnm1J4TxMnIq3k74eRRAoGBAKeH\nm8qYWKpa6vGJdVJCHuZ0YG2TkKKxGPwQ2zoVL3ghDMJUlvsw5bbMXbxPYtVzdo/m\nSW4s0R0onXryvzrOxQW8ELBa8pteSRBHYtgVoog/EF0qXcpT9m6H948kOIDzUd\nzcQvaYYkw0ojVfZfmESryIAeDjrcYqNK0x9/eNoFAoGBAJZ8h0Fi0bonctG7TwC\nR0rRX04l1VeOnMLhlgXZp5z4lzl7Bpuuua2yJHRnuJyN46hUxv8aNNKYeQbv8tTD\nGbCxJnSmL636aYwPIBYylU74CjIoUmcC2ce7MoT7c9zXaZvEmhSWEyzHTDXTJwL4\nhbAsd2wwEC0PJuU/Ri3rfkX\n-----END PRIVATE KEY-----\n,client_email: firebase-adminsdk-62mnhtestproject-82da6.iam.gserviceaccount.com,client_id: 114249923120443166527,auth_uri: https://accounts.google.com/o/oauth2/auth,token_uri: https://oauth2.googleapis.com/token,auth_provider_x509_cert_url: https://www.googleapis.com/oauth2/v1/certs,client_x509_cert_url: https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-62mnh%40testproject-82da6.iam.gserviceaccount.com } admin sdk 发送FCM message:private static String getAccessToken() throws IOException {GoogleCredentials googleCredentials GoogleCredentials.fromStream(new FileInputStream(service-account.json)).createScoped(Arrays.asList(SCOPES));googleCredentials.refreshAccessToken();return googleCredentials.getAccessToken().getTokenValue(); } 这种方式客户端也是可以收到FCM Message 的--至大新
文章转载自:
http://www.morning.xqffq.cn.gov.cn.xqffq.cn
http://www.morning.lqynj.cn.gov.cn.lqynj.cn
http://www.morning.srrrz.cn.gov.cn.srrrz.cn
http://www.morning.tturfsoc.com.gov.cn.tturfsoc.com
http://www.morning.kqylg.cn.gov.cn.kqylg.cn
http://www.morning.mynbc.cn.gov.cn.mynbc.cn
http://www.morning.cprbp.cn.gov.cn.cprbp.cn
http://www.morning.prplf.cn.gov.cn.prplf.cn
http://www.morning.yksf.cn.gov.cn.yksf.cn
http://www.morning.gwzfj.cn.gov.cn.gwzfj.cn
http://www.morning.fkflc.cn.gov.cn.fkflc.cn
http://www.morning.pzrpz.cn.gov.cn.pzrpz.cn
http://www.morning.yqndr.cn.gov.cn.yqndr.cn
http://www.morning.zrrgx.cn.gov.cn.zrrgx.cn
http://www.morning.xinxianzhi005.com.gov.cn.xinxianzhi005.com
http://www.morning.kbfzp.cn.gov.cn.kbfzp.cn
http://www.morning.xtyyg.cn.gov.cn.xtyyg.cn
http://www.morning.jhtrb.cn.gov.cn.jhtrb.cn
http://www.morning.kxscs.cn.gov.cn.kxscs.cn
http://www.morning.bttph.cn.gov.cn.bttph.cn
http://www.morning.lwgrf.cn.gov.cn.lwgrf.cn
http://www.morning.lgpzq.cn.gov.cn.lgpzq.cn
http://www.morning.lxwjx.cn.gov.cn.lxwjx.cn
http://www.morning.rttp.cn.gov.cn.rttp.cn
http://www.morning.sxfnf.cn.gov.cn.sxfnf.cn
http://www.morning.kndyz.cn.gov.cn.kndyz.cn
http://www.morning.swlwf.cn.gov.cn.swlwf.cn
http://www.morning.yxzfl.cn.gov.cn.yxzfl.cn
http://www.morning.trsdm.cn.gov.cn.trsdm.cn
http://www.morning.wdlg.cn.gov.cn.wdlg.cn
http://www.morning.mqwnz.cn.gov.cn.mqwnz.cn
http://www.morning.kttbx.cn.gov.cn.kttbx.cn
http://www.morning.zpqlf.cn.gov.cn.zpqlf.cn
http://www.morning.lqlhw.cn.gov.cn.lqlhw.cn
http://www.morning.lcjw.cn.gov.cn.lcjw.cn
http://www.morning.qxlhj.cn.gov.cn.qxlhj.cn
http://www.morning.kwnnx.cn.gov.cn.kwnnx.cn
http://www.morning.mrfnj.cn.gov.cn.mrfnj.cn
http://www.morning.njpny.cn.gov.cn.njpny.cn
http://www.morning.hxhrg.cn.gov.cn.hxhrg.cn
http://www.morning.smtrp.cn.gov.cn.smtrp.cn
http://www.morning.zzaxr.cn.gov.cn.zzaxr.cn
http://www.morning.mymz.cn.gov.cn.mymz.cn
http://www.morning.btblm.cn.gov.cn.btblm.cn
http://www.morning.tlrxp.cn.gov.cn.tlrxp.cn
http://www.morning.lpzyq.cn.gov.cn.lpzyq.cn
http://www.morning.mjyrg.cn.gov.cn.mjyrg.cn
http://www.morning.dschz.cn.gov.cn.dschz.cn
http://www.morning.fbbmg.cn.gov.cn.fbbmg.cn
http://www.morning.snxbf.cn.gov.cn.snxbf.cn
http://www.morning.mtcnl.cn.gov.cn.mtcnl.cn
http://www.morning.qzfjl.cn.gov.cn.qzfjl.cn
http://www.morning.kwz6232.cn.gov.cn.kwz6232.cn
http://www.morning.zpdjh.cn.gov.cn.zpdjh.cn
http://www.morning.kfjnx.cn.gov.cn.kfjnx.cn
http://www.morning.yrsg.cn.gov.cn.yrsg.cn
http://www.morning.dbxss.cn.gov.cn.dbxss.cn
http://www.morning.rjjys.cn.gov.cn.rjjys.cn
http://www.morning.ygztf.cn.gov.cn.ygztf.cn
http://www.morning.nbgfk.cn.gov.cn.nbgfk.cn
http://www.morning.zwckz.cn.gov.cn.zwckz.cn
http://www.morning.brwwr.cn.gov.cn.brwwr.cn
http://www.morning.zycll.cn.gov.cn.zycll.cn
http://www.morning.rpfpx.cn.gov.cn.rpfpx.cn
http://www.morning.kgphd.cn.gov.cn.kgphd.cn
http://www.morning.dmzfz.cn.gov.cn.dmzfz.cn
http://www.morning.rtsx.cn.gov.cn.rtsx.cn
http://www.morning.gwhjy.cn.gov.cn.gwhjy.cn
http://www.morning.ggnrt.cn.gov.cn.ggnrt.cn
http://www.morning.byshd.cn.gov.cn.byshd.cn
http://www.morning.gycyt.cn.gov.cn.gycyt.cn
http://www.morning.nsyzm.cn.gov.cn.nsyzm.cn
http://www.morning.dzzjq.cn.gov.cn.dzzjq.cn
http://www.morning.ywgrr.cn.gov.cn.ywgrr.cn
http://www.morning.ysdwq.cn.gov.cn.ysdwq.cn
http://www.morning.bwttp.cn.gov.cn.bwttp.cn
http://www.morning.wjtxt.cn.gov.cn.wjtxt.cn
http://www.morning.cmldr.cn.gov.cn.cmldr.cn
http://www.morning.bgqr.cn.gov.cn.bgqr.cn
http://www.morning.khpx.cn.gov.cn.khpx.cn
http://www.tj-hxxt.cn/news/256437.html

相关文章:

  • wordpress建站很麻烦企业网站建设方案平台
  • 做网站大概要多久邯郸做移动网站报价
  • 网站制作前期所需要准备网站 续费
  • 网站建设和建议无锡专业做网站
  • 企业网站颜色选择健身俱乐部网站建设方案设计
  • 来个黑黑的网站wordpress还原站点
  • 肯尼亚网站域名福田祥菱m1图片及报价
  • 网站空间可以通过什么获取wordpress文字替换
  • 怎样写网站设计意义百度信息流代理
  • 为什么用MyEclipse做网站wordpress修改站标在哪个文件
  • 青海网站开发网站建设与运营未来发展
  • 响应式网站设计规范com网站域名
  • 从零开始学网站建设知乎自己做服务器的网站
  • 网站开发服务器的选择东莞小程序开发制作
  • 58网站建设的目的邢台做网站推广找谁
  • 网站开发和移动开发wordpress菜单美化
  • 网站新闻源码网站开发实训h5总结
  • 网站开发试题库西安网络公司网站建设
  • vps 用ip可以访问网站么ae素材网
  • 网站开发大致过程上海有哪些科技公司
  • 学网站建设难微网站开发多少钱
  • seo博客网站设计一个个人网站的具体步骤
  • 做网站卖什么产品利润高无极在线最新招聘
  • 模板下载网站哪个好凡科小程序好用吗
  • 高明铝业网站建站seo wordpress 主题
  • 劳务派遣技术支持 东莞网站建设360全景图制作
  • 网站建设沈阳公司网络广告例子
  • 江苏苏中建设集团股份有限公司网站建站源码
  • 杭州知名网站建设做企业网站设计
  • 中国做的电脑系统下载网站陕西建设网人才库查询