V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Jed2020
V2EX  ›  程序员

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

  •  
  •   Jed2020 · 3 小时 15 分钟前 · 1055 次点击

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

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

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

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

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

    老哥们,有方案吗教教我

    35 条回复    2024-11-21 17:19:35 +08:00
    Shura
        1
    Shura  
       3 小时 11 分钟前
    安卓,可以写个前台服务,ios 就没辙了。
    chachi
        2
    chachi  
       3 小时 4 分钟前
    这种 app 不应该工业设备吗
    NoOneNoBody
        3
    NoOneNoBody  
       3 小时 4 分钟前
    需求是网络恢复自动发送,但不需要用“发送”这个数据来检测网络啊,只要检测到 True 就可以通过事件驱动发送任务了吧?
    前台后台这个问题才是手机的事,这个不懂,但肯定有方法的
    kzfile
        4
    kzfile  
       3 小时 3 分钟前   ❤️ 1
    老板自己找到方法了为啥不直说,还让你沉淀沉淀?
    null113
        5
    null113  
       3 小时 2 分钟前
    "说他已经在网上看到相关解决方案了" 让他发你参考呗
    HangoX
        6
    HangoX  
       3 小时前
    让老板给出网上的方案,你自己参考一下
    android 目前还可以,直接挂前台服务,监听网络变化
    或者用账号同步服务,或者直接用 firebase 自己带的
    Jed2020
        7
    Jed2020  
    OP
       2 小时 58 分钟前
    @null113 他看到的是解决方案是 APP 申请后台常驻权限,然后监听网络信号,信号好的时候发送数据。我跟他说常驻也不是一直常驻的,而且我感觉锁屏状态下还能发送数据应该做不到吧
    manami
        8
    manami  
       2 小时 58 分钟前 via Android
    手机病毒为啥都可以 /思考 ing
    InkStone
        9
    InkStone  
       2 小时 55 分钟前
    挂后台必须用户手动允许 app 后台运行,不然会被系统杀进程
    Jed2020
        10
    Jed2020  
    OP
       2 小时 54 分钟前
    老板看到的解决方案是安卓申请后台常驻权限,然后监听网络信号,信号好的时候发送数据。我没做过 APP 保活的功能,不确定能不能做到,而且就算安卓可以做到,iOS 可以做到吗,因为我们用的 RN ,业务得统一,还有一个问题就是锁屏状态下也能保活吗?
    Jed2020
        11
    Jed2020  
    OP
       2 小时 52 分钟前
    @InkStone 只要申请权限就可以了吗,还是要写什么后台服务,然后只有这个服务能在后台执行
    Jed2020
        12
    Jed2020  
    OP
       2 小时 51 分钟前
    @HangoX 老哥细说,firebase 自带的啥
    WebKit
        13
    WebKit  
       2 小时 38 分钟前
    @Jed2020 #10 iOS 可以后台播放无声音乐来实现常驻,比 Android 更简单。
    wu67
        14
    wu67  
       2 小时 25 分钟前
    你去看看那个短信转发工具呗. 印象中分好几步来完成后台常驻呢.
    harryWebb
        15
    harryWebb  
       2 小时 11 分钟前
    参考一下流氓安卓软件的方案。。。

    时不时弹出来让用户点一下,然后常驻,还有的直接更换桌面常驻

    ios 是肯定做不到的,别想了,你老板要是能 ios 做到,可以把这个方案拿去卖给黑产,比你做个什么 app 值钱多了
    myderr
        16
    myderr  
       2 小时 9 分钟前
    建立局域网服务器,连 WiFi 上传到局域网的服务器,服务器来处理数据
    Jed2020
        17
    Jed2020  
    OP
       2 小时 4 分钟前
    @myderr 有道理,这个可以提一下
    coderljx
        18
    coderljx  
       2 小时 3 分钟前
    电池优化白名单,加入自启动,锁定后台。这些都需要用户参与,用在消息推送上还可以,app 能比较稳定接收到推送。
    MoYi123
        19
    MoYi123  
       2 小时 2 分钟前   ❤️ 1
    我在安卓平板上挂的 alist, 设置了之后基本上不会被杀. 参考一下.
    https://github.com/jing332/AListFlutter
    maximdx
        20
    maximdx  
       1 小时 58 分钟前
    @WebKit 这个不会被检测到有恶意倾向导致上不了架吗?
    tool2dx
        21
    tool2dx  
       1 小时 48 分钟前 via Android
    adb 直接运行 elf 可以保活,但是需要用户手机开启开发者模式,感觉没那么通用。
    capgrey
        22
    capgrey  
       1 小时 45 分钟前
    老板的网上:拿了个套壳 GPT 随便问了一下。GPT 热情回答:当然可以!
    idonttellyou
        23
    idonttellyou  
       1 小时 38 分钟前
    Android 看看 WorkerManager 能不能用
    noparking188
        24
    noparking188  
       1 小时 27 分钟前
    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
        25
    noparking188  
       1 小时 26 分钟前
    @noparking188 Offline-mode with automatic reconnection and consistency guarantees
    zihuyishi
        26
    zihuyishi  
       1 小时 24 分钟前
    你参考下音乐软件怎么实现的,把自己伪装成音乐 app 常驻后台就行了。以前很多流氓 app 也是这么实现的,所以就会出现你听着歌打开这个软件歌停了
    opengps
        27
    opengps  
       1 小时 22 分钟前
    既然允许网络恢复后再发送,那这时效性稍微推迟一下也可以允许下次打开再发送。

    所以真实需求是后续补发,而不是网络恢复就补发这个伪需求
    isSamle
        28
    isSamle  
       1 小时 18 分钟前   ❤️ 1
    比较简单的实现方法,船上放个中间服务器,弄个树莓派估计都可以,在上面放个消息队列,手机的数据传给中间服务器,中间服务器等连上主服务器之后进行消费
    baolinliu442k
        29
    baolinliu442k  
       1 小时 3 分钟前
    他都看到了不直接告诉你,让你沉淀
    ahzjm
        30
    ahzjm  
       53 分钟前
    微信能做到的你就能做到
    Danmen123
        31
    Danmen123  
       52 分钟前
    我只知道安卓,国产系统专治不服,后台各种杀死。如果不是国产系统的话,workManager 刚好可以解决你的需求。
    WebKit
        32
    WebKit  
       49 分钟前
    @maximdx #20 很多大厂都是这么做的。京东 腾讯 网易 都有。而且一般也检测不到
    WebKit
        33
    WebKit  
       48 分钟前
    @harryWebb #15 现实是 iOS 做起来比 Android 更简单、更稳定。
    harryWebb
        34
    harryWebb  
       34 分钟前
    @WebKit 老哥细说 ios 咋实现,借鉴一下方案我搞搞看
    ShadowPower
        35
    ShadowPower  
       12 分钟前
    Android 可以用常驻通知+Service 保持前台运行,iOS 可以通过推送唤醒后台 APP ,联网的时候就可以收到推送。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5139 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 09:32 · PVG 17:32 · LAX 01:32 · JFK 04:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.