首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么在Flutter/Android客户端上使用FCM服务器密钥是不好的做法?

在Flutter/Android客户端上使用FCM(Firebase Cloud Messaging)服务器密钥是不好的做法,原因如下:

  1. 安全性问题:将FCM服务器密钥嵌入到客户端代码中,会增加密钥泄露的风险。如果攻击者获取了密钥,他们可以滥用该密钥发送未经授权的推送通知,或者访问与该密钥相关的其他敏感数据。
  2. 难以更新和管理:将服务器密钥硬编码到客户端代码中,意味着每次密钥更新时都需要重新发布和部署应用程序。这样做会增加维护成本,并且可能导致用户无法及时收到推送通知。
  3. 缺乏灵活性:将服务器密钥直接嵌入到客户端代码中,限制了对推送通知的灵活控制。如果需要更改推送通知的行为或配置,必须重新发布应用程序,而无法通过服务器端进行动态调整。

相反,推荐的做法是将FCM服务器密钥存储在安全的服务器端,并通过安全的API或其他安全机制将推送通知发送到FCM服务器。这样做的优势包括:

  1. 提高安全性:通过将服务器密钥存储在安全的服务器端,可以减少密钥泄露的风险,并确保只有经过授权的服务器才能发送推送通知。
  2. 简化密钥管理:将服务器密钥集中存储在服务器端,可以更轻松地进行密钥的更新和管理。无需重新发布应用程序,只需更新服务器端的密钥即可。
  3. 灵活性和可扩展性:通过使用服务器端发送推送通知,可以更灵活地控制推送通知的行为和配置。可以根据需要动态调整推送通知的内容、目标和触发条件,而无需重新发布应用程序。

对于Flutter/Android客户端,可以通过与服务器端进行通信,将推送通知的相关信息传递给服务器端,然后由服务器端使用FCM服务器密钥发送推送通知。这样可以确保安全性和灵活性,并提供更好的用户体验。

腾讯云提供了云推送(TPNS)服务,可以作为替代方案来发送推送通知。您可以通过腾讯云云推送服务来实现在Flutter/Android客户端上的推送通知功能。详情请参考腾讯云云推送产品介绍:https://cloud.tencent.com/product/tpns

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

FCM---Android系统级推送---你还在用第三方推送?

Messaging FCM谷歌推出最新Android系统级别的消息推送服务(用来替换GCM)。...生命周期流程 下面FCM主要过程: Enabling FCM:运行在手机上注册了来接收消息Android程序。 Sending a message:发送消息到手机第三方程序服务器。...这些服务器从一个应用服务器获取消息,并将其发送至设备上运行客户端应用。Google 为 HTTP 和 XMPP 提供连接服务器。 2、一台应用服务器,您必须在您环境中实现它。...此应用服务器通过选定FCM连接服务器使用合适 XMPP 或 HTTP 协议向客户端应用发送数据。...另外有個功能用來發送訊息給 Android client 端 或 接收 client 端上訊息,如果只有需要發送訊息功能,那麼這支程式您可以放在您網站(third party server)上

12.5K30

HomeRental - 预订房产 带有聊天功能完整 Flutter 应用程序 | 获取X | 网络管理面板v1.0.9

简介 HomeRental 一款用于出租公寓、公寓、公寓、高级和现代住宅应用程序。Android 和 iOS 均运行良好。 特点: 1. 介绍页面有 3 张幻灯片,精美的外观和 UI 感觉。...改进 Flutter 代码,提高性能 安装需求 1. Flutter 框架 ( https://flutter.dev) 2. 服务器、托管、支持 SSL 域 (https) 3....使用 PHP v 7.4 至 7 Code Igniter v.4x。遵循技术文档中说明。全力支持。 8. 思考大脑 技术栈: 1....Firebase 集成(FCM、身份验证、通知) 4. Google Map 集成(需要 API Google Key) 5. Flutter 最新准备就绪(声音零安全)。 6....服务器、托管、带 SSL 域需要支持。 11. 数据库 MySQL、PHPMyAdmin、Bootstrap HTML5 Web 面板 12. Android 和 iOS 均运行良好

9410

集成推送那点事-友盟Mob-FlutterFCM

} 很多时候我们都希望,即使用户当前未使用 App,或者说当前 App 处于被杀死状态,后台推送消息依然想被前台接收。...3.2 FCM 集成 进入首页后,点击 Android 图标,开始 Android 接入/集成相关工作: ? 一共有如下四步: 第一步填写对应包名以及 SHA-1,反之我都填了。 ?..." android:value="false" /> 到此,FCM 完毕~ 四、Flutter Android 集成 - Mob 此模块在厂商相关信息完善时,集成仅仅几分钟~ 相对于 Flutter...以及对应 Flutter 集成指南: mob.com/wiki/detail… Mob 文档,真的良心,集成贼简单,入手超级方便,一起来看。...中注册下,一般也无需操作,我这里之前写过一个通道,附上部分代码: import io.flutter.embedding.android.FlutterActivity import io.flutter.embedding.engine.FlutterEngine

11.2K41

h5Notification 、web Push介绍

ajax轮询通过客户端不断向服务端发送http请求,若有新消息就取回模式保持数据实时更新,但这种方式需要服务器有很快处理速度和资源 http长连接客户端向服务器发送请求后,若服务器没有新数据要发送...,公钥浏览器端使用,用来生成subscription,密钥服务端使用,用来发Push。...FCM官方这么介绍: Firebase 云信息传递 (FCM) 一种跨平台消息传递解决方案,可供您免费、可靠地传递消息。 使用 FCM,您可以通知客户端应用存在可同步新电子邮件或其他数据。...FCM一种可靠消息传递平台,它最大优点同一套Push机制可以IOS/Android/Web三端使用: ?...这个意义很大,因为Android推送一直都比较乱,国内有些APP使用小米Push服务,有些使用百度,还有些使用腾讯信鸽等等,这些Push都需要在后台运行线程,并且不能休眠,这就导致了手机休眠状态时仍然有很多线程在运行着

4.2K20

使用 FCM 通知您用户

通知让应用用户保持联系和获取更新重要渠道。Android 提供通知 API 用于设备上创建和发布通知,但这些通知经常由外部事件触发,并从应用服务器发送至应用。...用 FCM 实现远程通知 我们推荐使用 Firebase 云消息 (FCM) 发送远程通知到 Android 设备。FCM 一种免费跨平台消息传递解决方案,每日可靠传递千亿条消息。...尤其用于发送远程通知,以通知客户端应用数据可同步。如果您仍使用已被弃用 Google 云消息 (GCM) 或 C2DM 库,时候升级到 FCM 了!...有两种类型 FCM 消息可选: 通知消息,简化了通知处理且默认高优先级。 数据消息,适用于客户端应用内处理 FCM 消息。 您可以把数据信息优先级设为高或普通。...如果网络不好使用 FCM 有效负载中内容就可以确保发一条通知给用户,从而仍然可以及时通知用户。然后用户可以打开应用再加载全部数据。

3.4K30

新能力 | 云开发基于Flutter云端一体化探索

导语 Flutter 框架当下移动客户端开发最热门解决方案,除了可以跨 Android、iOS、web 三端之外, 还能跨越第四端吗?答案肯定,跨越第四端就是云端。...云端一体化理念 云端一体化,主要是打通客户端与云端资源(云函数、对象存储、文档型数据库等)链路,让开发者可以客户端上直接调用云资源,而无需构建应用后端服务,让应用开发变得更简单。...云开发 Flutter 插件 云开发(CloudBase)云端一体化后端云服务 ,采用 serverless 架构,免去了移动应用构建中繁琐服务器搭建和运维。...同时云开发提供静态托管、命令行工具 (CLI) 、Flutter SDK 等能力极大降低了应用开发门槛。使用云开发可以快速构建完整小程序/小游戏、H5、Web、移动 App 等应用。...基于这些基础设施,云开发团队再次推出 Flutter 插件,让移动开发者 Flutter 框架上也可以用上这些能力: 使用场景 重型应用内运营活动页 运营活动页需求繁琐,并且上线时间紧急,而且不好估计访问量

41220

新能力 | 云开发基于Flutter云端一体化探索

导语 Flutter 框架当下移动客户端开发最热门解决方案,除了可以跨 Android、iOS、web 三端之外, 还能跨越第四端吗?答案肯定,跨越第四端就是云端。...云端一体化理念 云端一体化,主要是打通客户端与云端资源(云函数、对象存储、文档型数据库等)链路,让开发者可以客户端上直接调用云资源,而无需构建应用后端服务,让应用开发变得更简单。...image.png 云开发 Flutter 插件 云开发(CloudBase)云端一体化后端云服务 ,采用 serverless 架构,免去了移动应用构建中繁琐服务器搭建和运维。...同时云开发提供静态托管、命令行工具 (CLI) 、Flutter SDK 等能力极大降低了应用开发门槛。使用云开发可以快速构建完整小程序/小游戏、H5、Web、移动 App 等应用。...基于这些基础设施,云开发团队再次推出 Flutter 插件,让移动开发者 Flutter 框架上也可以用上这些能力: image.png 使用场景 重型应用内运营活动页 运营活动页需求繁琐,并且上线时间紧急

3.3K20

Fiddler 抓包 Android

因为原始HTTP设计中没有考虑中间服务器(即代理)情况,客户发送报文前已经知道服务器地址并与之建立了连接,没有必要再发送方案,主机名及端口。...不过代理出现后这种做法就会有问题了,客户端连接了代理服务器,而代理服务器却没有办法连接正确服务器。...因此客户端发送给代理请求其实稍有不同,客户端会在请求行里使用完整uri,这样代理服务器才能解析真实服务器地址。...部分应用不能抓包原因 代理抓包关键就是需要HTTP客户端按照要求去连接代理服务器 一般情况下我们已经系统层面上设置了代理,通常http客户端都是按要求去实现进行http请求前会先检查系统代理...现实中这种况下这种情况还不少,Flutter 就是这种情况,默认Flutter不会主动使用系统代理,需要单独设置。

2.4K20

移动安全入门之常见抓包问题二

证书绑定 概述 证书绑定即客户收到服务器证书后,对该证书进行强校验,验证该证书是不是客户端承认证书,如果不是,则直接断开连接。...但是APP里面就不一样,APPHTTPS服务提供方自己开发客户端,开发者可以先将自己服务器证书打包内置到自己APP中,或者将证书签名内置到APP中,当客户端在请求服务器建立连接期间收到服务器证书后...但由于证书存在过期时间,因此当服务器端证书更换时,需同时更换客户端证书。既然要锁定证书,那么我们客户端上应该事先存在一个证书,我们才能锁定这个证书来验证我们真正服务端,而不是代理工具伪造服务端。...Flutter框架 Flutter使用Dart编写,因此它不会使用系统CA存储,Dart使用编译到应用程序中CA列表,DartAndroid上不支持代理,因此请使用带有iptablesProxyDroid...判断flutter应用 可以通过设备信息app查看,也可以通过⽇志grep flutter,如果有输出,⾃然也可以说明flutter

1.3K20

Flutter应用集成极光推送实现示例

事实上,消息推送一个横跨业务服务器、第三方推送服务托管厂商、操作系统长连接推送服务、用户终端以及移动手机应用等五方面的复杂业务应用场景。...具体来说,当某个应用需要发送消息推送时,消息会由应用服务器先发给苹果或Google消息推送服务器,然后经由APNs或FCM(Google消息推送框架)发送到设备,设备接收到消息后经过系统层面完成解析...由于第三方推送服务厂商提供功能和接入流程大都一致,考虑到极光社区和生态相对活跃,并且国内较早推出Flutter插件,所以我们可以Flutter项目中直接使用这个插件,下图极光推送架构示意图.../jpush-flutter-plugin 这里使用 ../ 校对路径表示方法,当然也可以使用jpush-flutter-plugin文件夹全路径。 ?...接下来,使用Android Studio打开Flutter工程,main.dart文件initState生命周期函数中添加初始化JPush代码,如下所示。

2.7K20

开源项目——FLutteriOSAndroid编写三个计算器APP

前端时间使用Flutter,iOS,Android三种技术编写了三个相同功能计算器APP,github地址,https://github.com/ThinkerJack/android-ios-flutter_notepad...因为拥有FlutterAndroid开发经验,学习过程中没有什么大阻碍,唯一觉得不好一点中文社区匮乏,面向初学者文章和书籍都比较少,随着IOS相关技术破坏性更新,导致很多教程不适用,耽误了不少时间...后续使用IOS技术写一些复杂点APP,提升技术水平。 android_calculator 1.项目简介 使用java编写Android APP,实现了计算器常见功能。...用Icon,用RN,用FLutter,用Android,用IOS都可以写出APP来,成为大前端,也就是掌握多种可以做同一个事情技术,会一种和会多种只不过谁记住了更多API。...最近在做一个移动端即时通讯需求,读了一些技术博客,这些博客不是为了Flutter而写,他讲述客户端和服务器端整个处理即时通讯流程,客户端开启连接,心跳检测,创建本地数据库,服务端接收到消息再转发到客户

83500

SOTER技术方案之秘钥体系

认证方案最重要服务器客户端之间密钥体系和认证流程,那么我们今天就来聊聊SOTER方案密钥体系,后续再详细聊聊认证流程。...服务器客户通讯过程中,签名用来验证数据完整性和真实性,防止抵赖。...签名一般采用非对称算法即需要一对公私钥,手机终端保存私钥并将公钥上传服务器客户端上数据必须经过私钥签名,服务器使用公钥验签,验证通过才能说明数据客户端上,验证不过说明数据不可信。...业务安全依赖应用安全,业务开通时需要验证业务开通数据真实,此时应用会产生一对公私钥Auth Key(业务验证密钥),在上传Auth Key公钥时必须使用ASK私钥进行签名,应用服务器获取到数据后使用...手机终端数据安全是由TEE来保证,主要负责密钥生成和客户端数据签名。 Attestation Key (ATTK): 设备验证密钥,用于验证设备合法性,产生ASK必要密钥

1.5K70

消息通知(Notification)用户触达系统设计

近年来,通知功能已经成为许多应用程序中突出特性。构建一个能每天发送数百万通知可扩展系统绝非易事。这正是为什么我觉得有必要记录我在这方面踩坑之路。也叫用户触达系统。...然而,若系统负载过高,轻微延迟也可接受 支持设备:移动设备(iOS 和 Android)以及笔记本电脑/台式机 通知可以由客户端应用程序事件触发,也可以服务器端进行计划 用户可以选择不再接收将来通知...然后,系统应该以以下组件结构化: 不同通知类型配置 收集联系信息流 通知发送和接收流 4 不同通知类型高级设计与AWS 每种通知类型高级层面上工作原理。...4.4 Android推送通知 使用SNS + FCMAndroid推送通知 Android有类似通知流。...与使用APNS不同,使用Firebase Cloud Messaging(FCM)向Android设备发送推送通知。

46310

Android面试官:想进大厂先把基础打牢了再说!网络知识十二问你都答得出来吗?

科普:WebSocketTCP连接建立后,还要通过Http进行一次握手,也就是通过Http发送一条GET请求消息给服务器,告诉服务器我要建立WebSocket连接了,你准备好哦,具体做法就是头部信息中添加相关参数...5、用对称密钥传输数据 拿到对称密钥后,双方就可以使用对称密钥加密解密数据,进行正常通信了。 扩展:为什么使用非对称加密算法协商出对称加密这种方法?...其次,确定对称加密传输数据前提下,如果传输对称加密密钥个涉及到安全问题,所以就采用了安全性更高非对称加密算法,加上证书链机制,保证了传输对称密钥相关数据安全性。...开放互联网上HTTP 2.0将只用于https://网址,而 http://网址将继续使用HTTP/1,目的开放互联网上增加使用加密技术,以提供强有力保护去遏制主动攻击 HTTP2主要有以下特性...3、TLS False Start 这是Google提出来优化方案,具体做法TLS握手协商第二个阶段,也就是客户验证证书,发送了pre—master secret之后,就直接把应用数据带上

1.2K00

解读 Flutter 全平台开发误解与偏见

事实上 Flutter Android 和 iOS 平台上兼容和适配确实很不错,但是对于 Web 和 Desktop 目前来说显然不是如此,“不重写下扩展”这话估计谷歌自己都不信。...首先 “不重写情况下扩展到 Desktop 和 Web” 就很不现实 ,为什么呢我们后面分析,这里先说下 Flutter 核心设计,了解过 Flutter 实现原理应该知道, Flutter 核心设计...flutter web 编译可以通过 --web-renderer 指定渲染模式,现在模式 auto 模式,也就是在手机浏览器使用 HTML renderer, PC 浏览器使用 CanvasKit...: Flutter 开发者恰好写了一个 App 或者 Desktop 页面,那么顺手把它打包成 Web 用起来,虽然体验不好但是又不是不能用场景。...Flutter support for foldable devices》 经历过多端开发才明白一套代码端上通用成本有多高,跨平台能够 Android 和 iOS 上高性能低耦合实现已经很难得了

1.3K20

Flutter完整开发实战详解(十九、 Android 和 iOS 打包提交审核指南)

文章汇总地址: Flutter 完整实战实战系列文章专栏 Flutter 番外世界系列文章专栏 一、Android 打包和审核流程 1、打包 事实上 Androd 打包和审核流程都相对简单,...另外需要注意,Android 上需要在 android/app/src/build.gradle 下配置 signingConfigs 来指定打包密钥等信息,具体生成密钥这里就不详说,之后把 signingConfigs...image 2、提交审核 其实在 Android 上提交审核比较简单,因为 Android 只需要提供 Apk 下载链接就可以直接安装,所以很多厂家都在有自己服务器上直接放上 Apk 文件,但是为了更好体验和分发...image 其中比如 ITMS-90683 说没有 plist 内配置 NSContactsUsageDescription key-value,也就是向用户解释你为什么需要用到读取用户联系人权限...如下图所示,最后提一些审核建议,比如: 前面说过应用截图要尽量体现应用主要内容; 不允许应用内滥用应用更新提示,比如不允许应用自己跳转下载更新,只能简单提示后跳转 app store ,如果把握不好尺度干脆

2K22

移动跨平台开发框架选型建议及理由

图片3、自绘引擎时代自带渲染引擎,客户端仅提供一块画布即可获得从业务逻辑到功能呈现多端高度一致渲染体验。Flutter为数不多代表。...Flutter 开辟了一种全新思路,即从头到尾重写一套跨平台 UI 框架,包括渲染逻辑,甚至开发语言。...,例如多媒体、蓝牙、相机等性能不好,对内存消耗大2、容器跨端另一种统一多端思路将 Native 定制成标准容器,让同一份代码跑一个个标准容器中。...具体来讲 React Native 可以跨 Android、iOS、Web、Windows 四端,Flutter 可以跨 Android、iOS、Web、Linux 四端,Weex 可以跨 Android...如果说小程序仍然依靠 Web 技术运行,那为什么还要单独去使用小程序呢?就像前面所说到一样,Web 始终没法调用例如相机、蓝牙等这样权限,并且用户使用体验会收到一定影响。

1.2K20

跨平台开发方案三个时代

编辑3、自绘引擎时代自带渲染引擎,客户端仅提供一块画布即可获得从业务逻辑到功能呈现多端高度一致渲染体验。Flutter为数不多代表。...Flutter 开辟了一种全新思路,即从头到尾重写一套跨平台 UI 框架,包括渲染逻辑,甚至开发语言。​...,例如多媒体、蓝牙、相机等性能不好,对内存消耗大2、容器跨端另一种统一多端思路将 Native 定制成标准容器,让同一份代码跑一个个标准容器中。...具体来讲 React Native 可以跨 Android、iOS、Web、Windows 四端,Flutter 可以跨 Android、iOS、Web、Linux 四端,Weex 可以跨 Android...如果说小程序仍然依靠 Web 技术运行,那为什么还要单独去使用小程序呢?就像前面所说到一样,Web 始终没法调用例如相机、蓝牙等这样权限,并且用户使用体验会收到一定影响。

3.9K00

浅谈移动跨平台开发框架发展历程

3、自绘引擎时代自带渲染引擎,客户端仅提供一块画布即可获得从业务逻辑到功能呈现多端高度一致渲染体验。Flutter为数不多代表。...Flutter 开辟了一种全新思路,即从头到尾重写一套跨平台 UI 框架,包括渲染逻辑,甚至开发语言。...,例如多媒体、蓝牙、相机等性能不好,对内存消耗大2、容器跨端另一种统一多端思路将 Native 定制成标准容器,让同一份代码跑一个个标准容器中。...具体来讲 React Native 可以跨 Android、iOS、Web、Windows 四端,Flutter 可以跨 Android、iOS、Web、Linux 四端,Weex 可以跨 Android...如果说小程序仍然依靠 Web 技术运行,那为什么还要单独去使用小程序呢?就像前面所说到一样,Web 始终没法调用例如相机、蓝牙等这样权限,并且用户使用体验会收到一定影响。

1.3K40

Android 手记 | Android MobPush 接入小结

地铁上我想了很多: 拉活,通过产品各种特性(活动)吸引用户点击使用,进一步验证产品思路、方向; 促进用户粘性,好比今天收到通知,鸡老大直播 ing,马不停蹄点击进去开始膜拜; 重大事件通知与防范,科技力量...iOS 只需要发送苹果服务器,然后进行后续处理 个人理解,而 Android?这里特意搜索了下国内几大厂商历史图: [image.png] 瞧瞧,目前五大厂商赫然目!!!...那么对于我们原生 Android 开发而言,如何处理,能达到最好推送效果?我想那可能依次对主流厂商进行兼容适配,但是同时也带来了成倍接入工作。 较好一点,有困难,便有专业解决困难提供商。...、iOS、Windows Phone、QuickApp Android、iOS、Flutter Android、iOS、Flutter、Unity、JavaScript、Cocos2d-X Android...奇怪 AndroidManifest 中也看到了上文说到 ContentProvider: <provider android:name="com.mob.MobProvider"

2.1K30
领券