投票与推送 - 有什么理由避免推送通知?

2024-04-02

我刚刚作为(技术)产品经理继承了一个 Android 应用程序项目,该项目使用5 秒计时器轮询远程 URL查看应用程序启动的某些工作是否已完成。我最初的反应当然是建议用推送/通知机制替换它,最好是Android内置的GCM,这样工作就从手机上的app中移除,放到了服务器端。

令人惊讶的是,我遇到了开发团队的阻力。一位前产品经理(我的前任)似乎明确要求实施以这种方式进行。不幸的是,他不太愿意记录他的决定,所以我现在必须尝试追溯哪些原因可能导致这个决定,以证明实施中的改变是合理的。我列出了以下赞成和反对的清单:

Contra Push / 专业民意调查

  1. -
  2. -
  3. 实现推送通知所需的服务器端工作
  4. -
  5. 无法直接知道推送通知是否已成功发送
  6. 扩展推送通知传递可能会很痛苦

赞成推动/反对民意调查

  1. Work is removed from device
    • 较低的带宽使用率
    • 降低电池使用量
    • 响应速度更快的应用程序和设备
  2. 服务器负载降低,因为即使没有任何更改,设备也不会每 x 秒轮询一次 (DDOS)
  3. -
  4. 推送速度比 5 秒(当前计时器)更快(响应更快)
  5. 通过远程 URL 的轮询来实现推送通知的传递证明很简单(在这里它是有意义的)
  6. 扩展推送通知交付是一个已解决的问题,有许多开源项目和消息队列的简单实现

  • 对于此用例,还有其他原因避免推送通知并使用轮询吗?
  • 对于此用例,还有其他原因避免轮询并使用推送通知吗?
  • 还有其他重要的事情我忘记了吗?

无法知道推送通知是否已成功发送

当然有:让设备在收到推送消息后访问您的服务器。如果有效负载大于 4K,您可能无论如何都需要这样做。

扩展推送通知传递可能会很痛苦

它适用于相当大的用户群(例如,RememberTheMilk),甚至在基于 XMPP 的持久套接字解决方案之前。

对于此用例,还有其他原因避免推送通知并使用轮询吗?

GCM 没有服务水平保证。 GCM 是 Android 特定的;如果您正在寻找能够处理其他客户端操作系统的东西,您可能会考虑对其进行包装,例如 Amazon SNS。涉及第三方(例如 Google)的推送解决方案意味着您的原始推送消息负载将对这些第三方的服务器可见;如果这是一个问题(而且应该是),请使用合适的应用程序级加密。

对于此用例,还有其他原因避免轮询并使用推送通知吗?

五秒钟的民意调查让$BABY_DEITY cry.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

投票与推送 - 有什么理由避免推送通知? 的相关文章

  • 为什么 cordova.file.documentsDirectory 为空?

    我正在尝试使用 cordova plugin file transfer 在http ngcordova com docs plugins fileTransfer http ngcordova com docs plugins fileT
  • Kapt 未在即时应用程序功能模块中生成类

    我在我的 Android 应用程序中使用 dagger2 即使没有错误 它也不会生成匕首组件类 我已经在设置中启用了注释处理器并重新启动了我的 android studio 但这对我来说不起作用 我也读过这个帖子Dagger2 不生成 Da
  • Android Manifest 自动生成无效权限

    我不小心在 Android 清单中输入了无效的权限名称 并且无法将其删除 这是我的清单代码
  • 导航组件参数默认值

    在导航组件中 将参数从第一个片段发送到第二个片段时 默认值不会从导航图中获取哪个集合 这是我的代码 导航图 xml
  • BluetoothAdapter.getDefaultAdapter() 不返回 null

    这是我的第一篇文章 所以如果我做了一些愚蠢的事情 请告诉我 这个问题可能看起来与其他帖子类似 但或多或 少与我所看到的所有内容相反 关于该项目的事情 我正在开发 android 4 0 4 4 应用程序 我正在使用蓝牙 我正在运行 andr
  • Android Facebook sdk 3.5 分享对话框

    您好 我正在为 android sdk 3 5 实现 facebook 共享对话框 但是我按照指南没有取得任何成功 FacebookDialog shareDialog new FacebookDialog ShareDialogBuild
  • 游标索引越界异常

    打开后出现光标索引越界错误 数据库 请任何人告诉我如何打开现有数据库 sqllite Android 我想在数据库上触发一个选择查询 检索一些信息 public void getPatient SQLiteDatabase db Strin
  • Android 中有没有办法获取 SD 卡大小?

    欢迎大家 我已经在 Stackoverflow 和 google 上尝试过与此相关的每个问题 但没有一个有效 我已经尝试过类似下一个链接的操作 但它返回的内容与内部存储相同 如何获取外部存储 SD 卡的大小 带安装的 SD 卡 https
  • 在浏览器中打开 URL,即使我的应用程序为其注册了意图过滤器

    我的应用程序为某些 URL 注册了一个意图过滤器 因为它可以处理来自这些 URL 的数据 但是 在应用程序内部 我想提供一个按钮来在浏览器中打开这样的 URL 也就是说 如果设置了默认浏览器 则在默认浏览器中打开它 否则提供一个选择器 就像
  • 我的 Android 设备需要安装哪个驱动程序才能运行我的应用程序?

    我购买了 intex mobile 来在真实设备中测试我的 Android 应用程序 然而 该设备不存在于 OEM USB 驱动程序列表中 android 提供的设备列表中 我检查了 intex 官方网站 但不确定到底需要安装哪个驱动程序
  • 多语言 Android 应用程序:在电子邮件和密码字段中显示英文键盘

    我们正在开发一款多语言 Android 应用程序 针对英语和阿拉伯语 面临的问题是在登录和注册屏幕中 我们希望仅以英文文本输入用户名和密码字段 从而显示英文键盘 无论设备区域设置语言如何 已尝试在 edittext 中设置 inputtyp
  • android:进程和进程名称

    我试图理解android process属性 Ref says http developer android com guide topics manifest application element html proc 如果分配给该属性的
  • Android BLE 扫描在后台几分钟后停止

    当我为公司开发新冠肺炎接触者追踪应用程序时 我在后台遇到了 Android 扫描停止问题 这是我尝试过的 添加前台服务 禁用手机中所有与电池相关的优化选项 启用后台运行的应用程序 测试设备 搭载 Android 10 的 Galaxy S2
  • 更改 Android 中的媒体音量?

    我可以更改媒体音量吗 如何 到目前为止我用过这个 setVolumeControlStream AudioManager STREAM MUSIC 但有一个搜索栏并且想要更改媒体音量 而不是铃声音量 那么有人可以告诉我如何更改媒体音量onC
  • 使用 mupdf android 库导航到特定页面

    我如何使用 muPDF 库导航到特定页面 或者有没有办法让图书馆不记得我最后在那个pdf文件中浏览的是哪一页 Uri uri Uri parse path Intent intent new Intent MainActivity getC
  • 如何更改对话框片段内的片段

    我想做一个空的DialogFragment with a LinearLayout然后更改里面的片段LinearLayout 例如 第一个片段是 3 个按钮 facebook google 电子邮件登录 的登录 当有人按下电子邮件时 第 2
  • android 多关键词搜索

    我的应用程序包含搜索功能 它将搜索数据库内的内容 我的搜索的弱点是 我只能使用一个标签进行搜索 例如我只能搜索 猫 它会返回我的数据库中包含 猫 一词的内容 因为我正在使用LIKE在 select 语句期间进行查询 如何使用多个标签进行搜索
  • 使用 UPI url 调用 PSP 应用程序

    我正在尝试创建一个商家应用程序 它将根据 NPCI 的指南生成一个 url 此 url 将作为意图共享 并且 PSP 应用程序 任何注册的银行应用程序 应该能够侦听该 url 并被调用 我已经形成了这样的网址 upi pay pa icic
  • Android Jasper 报告

    Jasper Reporting 可以集成到 Android 应用程序中吗 我正在尝试从 jrxml 文件生成 PDF CSV 文本和 XLS 报告 但是 我没有看到 Android SDK 支持 net sf jasperreports
  • 查询联系人 - 有时返回空游标

    我正在尝试查询联系人的显示名称 Override public void onActivityResult int requestCode int resultCode Intent data switch requestCode case

随机推荐

  • knockout.js 将表单加载到 viewModel 中

    我目前正在成功使用 knockout js 来处理应用程序中的所有数据绑定 但是 在每个页面加载时 在我的 document ready 中 我正在执行初始异步数据加载 如下所示 document ready getData 但是 是否可以
  • pandas 附加到具有不同名称的列

    如何附加2个具有不同列名的不同数据框 a pd DataFrame id 0 1 2 3 countryid 22 36 21 64 famousfruit banana apple mango orange famousanimal mo
  • 有什么方法可以让用户上传的 SVG 图像免受代码注入等影响?

    我想在网站上显示用户上传的 SVG 图像 但它们很容易被利用 https security stackexchange com questions 11384 exploits or other security risks with sv
  • 使用 DOM 样式通过 Javascript 获取或更改 CSS 类属性

    我的目标是更改表中列的背景颜色 而无需按 ID 或名称单独寻址每个数据条目 我知道有几种方法可以做到这一点 确切地说我已经尝试了 3 种 但每种方法都遇到了问题 为了简单明了起见 在这个问题中 我问如何使用元素 样式 背景颜色 http w
  • 在 JavaFX HTMLeditor 中设置本地图像

    我正在寻找一种使用 JavaFX HTMLEditor 的 setHtmlText 来添加local图像 我可以添加远程图像没有问题 HTMLEditor editor new HTMLEditor editor setHtmlText i
  • 使用充气城堡正确创建带有中间证书的新证书

    所以我的问题如下 基本上我想使用 bouncy castle jdk16 版本 1 46 创建一个证书链 一般来说 我对充气城堡和 java security 相当陌生 所以如果我的方法可能完全错误 但无论如何 这就是我所做的 到目前为止
  • 当一张表小得多时,以编程方式连接表还是使用 SQL Join 语句更快?

    当一张表小得多时 以编程方式连接表还是使用 SQL Join 语句更快 更具体地说 如何从hashmap
  • 如何在 Dart 中构建单例?

    单例模式确保只创建一个类的一个实例 我如何在 Dart 中构建它 感谢达特工厂建造者 https www dartlang org guides language language tour factory constructors 构建单
  • Flutter本地数据库存储

    目前我正在创建一个用户注册标准 它有三个注册页面 对于每次完成的用户注册页面 我想将其存储在本地存储中 如果用户在第 3 级注册之前关闭应用程序 我想显示已完成页面的输入详细信息 而无需调用 api 那么 这是在 flutter 中本地存储
  • 中断 (n)curses 获取传入信号

    我的一个程序使用 ncurses 来绘制一个小 tui 我的目标之一是使其能够移植到其他诅咒实现中 这意味着我想捕获终端仿真器在调整大小操作时发出的 SIGWINCH 并更新我的 tui 以遵循更改后的几何形状 而不依赖于 ncurses
  • 如何使用 C# 将其他系列添加到 Excel 图表

    I am trying to add an additional data series to the chart this shows CPU threshold I can get the range and create the gr
  • SSRS字体在哪里安装?

    简单的问题我找不到简单的答案 我正在使用报告服务器生成报告 并且报告使用自定义字体 我的问题是我需要在所有将运行报告的计算机上安装自定义字体还是仅在服务器上安装自定义字体 该公司使用SSRS 2008 只有在报告服务器上安装字体然后启用字体
  • 使用jquery保存元素的所有css属性

    我基本上试图将元素的所有当前 css 属性保存在本地 var array 中 我试过 el css and el css 没有运气 有什么快速的技巧吗 demo http so lucafilosofi com save all css p
  • 尝试访问 ViewSet 创建定义中的 request.data 时出现 KeyError 'id'

    我最近从 drf 2 4 升级到 v3 并一直在尝试覆盖def Create在我的一个视图集中 但是 当尝试访问我保存到序列化器变量的 request data 时 我会收到错误 KeyError at api appointments i
  • Ruport - “”的未定义方法“each”:String

    我正在遵循本教程中的第一个示例 http ruportbook com printable documents html http ruportbook com printable documents html 但我一直得到 String的
  • 是否可以控制从 matplotlib 颜色图中检索哪些颜色?

    我想将图中的颜色分配给由整数表示的标称数据 我想从定性颜色图中绘制颜色 特别是我想从 Set3 中绘制五种颜色 问题是我想使用前五种颜色 但颜色映射器对我的数据进行标准化 五个分类值的范围从 1 到 5 并从 12 种颜色中选择第 1 4
  • 如何使用 hooks 覆盖 Material ui 样式

    我尝试使用类名使用 React Hooks 和 Material Ui 创建剪切到页面顶部的 AppBar 并将鼠标悬停在其他抽屉上 全部如以下所述 https material ui com demos drawers clipped u
  • 在顶点着色器中指定 3D 渲染目标的目标层? [HLSL]

    在 HLSL Directx11 中工作时 我发现有两种绑定 3D 渲染目标的方法 要么绑定整个目标 要么在指定图层时绑定它 如果绑定整个目标 如何在 HLSL 代码中指定应用输出颜色的图层 我怀疑这需要几何着色器 这是正确的吗 是否有任何
  • 两个 NFC 标签分别链接到项目中的两个不同活动?

    我正在做一个 NFC 应用程序 想知道这种情况是否可能 假设我在一个项目中有 2 个 NFC 标签和 2 个活动 写入NFC A以打开Activity A 方法是将NFC A中的MIME类型写入为 application com examp
  • 投票与推送 - 有什么理由避免推送通知?

    我刚刚作为 技术 产品经理继承了一个 Android 应用程序项目 该项目使用5 秒计时器轮询远程 URL查看应用程序启动的某些工作是否已完成 我最初的反应当然是建议用推送 通知机制替换它 最好是Android内置的GCM 这样工作就从手机