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

73 天前
 Jed2020

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

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

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

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

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

老哥们,有方案吗教教我

3761 次点击
所在节点    程序员
52 条回复
tool2dx
73 天前
adb 直接运行 elf 可以保活,但是需要用户手机开启开发者模式,感觉没那么通用。
capgrey
73 天前
老板的网上:拿了个套壳 GPT 随便问了一下。GPT 热情回答:当然可以!
idonttellyou
73 天前
Android 看看 WorkerManager 能不能用
noparking188
73 天前
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
73 天前
@noparking188 Offline-mode with automatic reconnection and consistency guarantees
zihuyishi
73 天前
你参考下音乐软件怎么实现的,把自己伪装成音乐 app 常驻后台就行了。以前很多流氓 app 也是这么实现的,所以就会出现你听着歌打开这个软件歌停了
opengps
73 天前
既然允许网络恢复后再发送,那这时效性稍微推迟一下也可以允许下次打开再发送。

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


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

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

https://tanronggui.xyz/t/1091491

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

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

© 2021 V2EX