求助: APP 在后台还能执行逻辑,发送数据吗

2024 年 11 月 21 日
 Jed2020

背景介绍:我们 APP ( react-native 写的)的用户是某船舶公司船员,需要上传各种轮船信息,然后海上的信号大家也都知道。

现在有个需求:如果上传失败,能够在网络恢复的时候自动上传。

老板的意思最好能做到网络恢复就发送,不管这个时候 APP 在前台后台,手机锁没锁屏。

让我调研下,并给出上传失败的解决方案。

我的方案是做数据缓存,下次打开的时候提示他上次失败了,点击继续发送。老板让我去沉淀沉淀,研究下后台上传数据的方案,说他已经在网上看到相关解决方案了...

老哥们,有方案吗教教我

7075 次点击
所在节点    程序员
52 条回复
tool2dx
2024 年 11 月 21 日
adb 直接运行 elf 可以保活,但是需要用户手机开启开发者模式,感觉没那么通用。
capgrey
2024 年 11 月 21 日
老板的网上:拿了个套壳 GPT 随便问了一下。GPT 热情回答:当然可以!
idonttellyou
2024 年 11 月 21 日
Android 看看 WorkerManager 能不能用
noparking188
2024 年 11 月 21 日
https://github.com/aspen-cloud/triplit

这个咋样呢

Real-time Sync: Triplit provides real-time data synchronization between server and browser with incremental updates and conflict resolution.
Local Caching: It includes a full-fledged client-side database for local caching, ensuring fast interactions and offline mode.
noparking188
2024 年 11 月 21 日
@noparking188 Offline-mode with automatic reconnection and consistency guarantees
zihuyishi
2024 年 11 月 21 日
你参考下音乐软件怎么实现的,把自己伪装成音乐 app 常驻后台就行了。以前很多流氓 app 也是这么实现的,所以就会出现你听着歌打开这个软件歌停了
opengps
2024 年 11 月 21 日
既然允许网络恢复后再发送,那这时效性稍微推迟一下也可以允许下次打开再发送。

所以真实需求是后续补发,而不是网络恢复就补发这个伪需求
isSamle
2024 年 11 月 21 日
比较简单的实现方法,船上放个中间服务器,弄个树莓派估计都可以,在上面放个消息队列,手机的数据传给中间服务器,中间服务器等连上主服务器之后进行消费
baolinliu442k
2024 年 11 月 21 日
他都看到了不直接告诉你,让你沉淀
ahzjm
2024 年 11 月 21 日
微信能做到的你就能做到
Danmen123
2024 年 11 月 21 日
我只知道安卓,国产系统专治不服,后台各种杀死。如果不是国产系统的话,workManager 刚好可以解决你的需求。
WebKit
2024 年 11 月 21 日
@maximdx #20 很多大厂都是这么做的。京东 腾讯 网易 都有。而且一般也检测不到
WebKit
2024 年 11 月 21 日
@harryWebb #15 现实是 iOS 做起来比 Android 更简单、更稳定。
harryWebb
2024 年 11 月 21 日
@WebKit 老哥细说 ios 咋实现,借鉴一下方案我搞搞看
ShadowPower
2024 年 11 月 21 日
Android 可以用常驻通知+Service 保持前台运行,iOS 可以通过推送唤醒后台 APP ,联网的时候就可以收到推送。
YsHaNg
2024 年 11 月 21 日
@harryWebb 不是 iOS 开发 不确定好不好用 background tasks API https://developer.apple.com/documentation/backgroundtasks https://forums.developer.apple.com/forums/thread/693337 但是使用一些类似 Google photos 群晖 photo 只要后台卡片不划掉自主备份都没问题 不用管保活拉起
yidev
2024 年 11 月 21 日
不动 ios, 用个 vpn 方式行不行?那些代理软件都可以常驻后台啊
cheng6563
2024 年 11 月 21 日
Android 让用户把 App 加入电池白名单然后开前台服务就行了。不同系统设置不同,尤其是国产系统可能要到多个地方设置。


iOS 可以用一些后台短期运行的 API 处理,这些后台时间都有限制,不过一般用来处理一些数据上传够用了。比如后台应用刷新,地理围栏之类的。
iOS 要后台常驻需要播放声音,这样用户一旦开个其他音频 App 就不行了。
lostwolfkf
2024 年 11 月 21 日
1 ,常驻后台,要求用户自己设置不杀进程。2 、保活
cwcc
2024 年 11 月 21 日
打开 App 后如果开启“在线时自动传输”的功能后,就保持应用请求开启定位服务,然后好像就能驻留后台了?(依稀记得当初 iSH 应用想要在 iOS 保活也是这么搞来着,就 cat 下/dev/location )

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/1091491

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX