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

微信如何在安卓 8.0 使用 gcm 推送,不要常驻后台

  •  
  •   yipkwong · 2018-06-29 22:34:58 +08:00 via Android · 23723 次点击
    这是一个创建于 2343 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如问题所示,有什么办法可以让微信的消息推送走 gcm,不要老是常驻后台,莫名耗电

    56 条回复    2018-11-06 19:06:26 +08:00
    xiva1209
        1
    xiva1209  
       2018-06-29 23:04:51 +08:00   ❤️ 2
    用应用管理这个 xposed 模块
    F1024
        2
    F1024  
       2018-06-29 23:29:41 +08:00
    好像有个 GCM 代收?
    yipkwong
        3
    yipkwong  
    OP
       2018-06-29 23:33:33 +08:00 via Android
    @F1024 app 吗?
    yipkwong
        4
    yipkwong  
    OP
       2018-06-29 23:33:55 +08:00 via Android
    @xiva1209 可以实现 gcm 推送,然后拉起微信吗?
    mozutaba
        5
    mozutaba  
       2018-06-29 23:36:09 +08:00
    微信好像不是靠 gcm 推送,无论哪个版本
    alvin666
        6
    alvin666  
       2018-06-29 23:36:54 +08:00 via Android
    酷安有个 app 能代收,要 xp
    honeycomb
        7
    honeycomb  
       2018-06-29 23:36:59 +08:00 via Android   ❤️ 1
    把 appops 里微信的 run in background 项设置为 ignore 即可,不过 Android 8.0 的实现有 bug,只会杀掉第一个 service (具体看 oasisfeng 提交的 issue report ),因此效果没有在 Android 8.1 的好
    xiva1209
        8
    xiva1209  
       2018-06-29 23:37:36 +08:00
    @yipkwong 是的它有一个 gcm 代收功能,可以拉起微信
    rinex20
        9
    rinex20  
       2018-06-29 23:39:53 +08:00 via Android
    play 版本一直可以 gcm.
    yipkwong
        10
    yipkwong  
    OP
       2018-06-30 00:12:30 +08:00 via Android
    @rinex20 可以,但是后天杀了进程后就没有办法拉起微信收信息了?所以不知道怎么办
    yipkwong
        11
    yipkwong  
    OP
       2018-06-30 00:13:11 +08:00 via Android
    @honeycomb 安卓 8.1 实现效果怎样?
    yipkwong
        12
    yipkwong  
    OP
       2018-06-30 00:13:33 +08:00 via Android
    @yipkwong 后台
    yipkwong
        13
    yipkwong  
    OP
       2018-06-30 00:22:33 +08:00 via Android
    @honeycomb 自己试过了可以走 gcm 但是没办法拉起微信
    crayygy
        14
    crayygy  
       2018-06-30 08:34:28 +08:00
    @yipkwong #13 主动杀进程的 GCM 推不到
    boileryao
        15
    boileryao  
       2018-06-30 14:11:06 +08:00
    如果 GCM/FCM?是可以用的话 微信是会优先用 GCM/FCM?的
    skylancer
        16
    skylancer  
       2018-06-30 14:12:36 +08:00
    @boileryao 并不是这个策略
    yipkwong
        17
    yipkwong  
    OP
       2018-06-30 18:11:59 +08:00 via Android
    @boileryao 好像是不会优先使用 gcm
    yipkwong
        18
    yipkwong  
    OP
       2018-06-30 18:13:13 +08:00 via Android
    @crayygy 但是一直后台有进程即使走 gcm 也没有什么意义啊,tg 没有后台进程走 gcm 照样有消息推送,难道这就是差距?
    BaiMax
        19
    BaiMax  
       2018-06-30 18:34:16 +08:00 via Android
    酷安上有一个 GcmForMojo,消息是通过 gcm 的,配合服务端可以基本脱离微信 app,之前试过有一定的延迟
    BaiMax
        20
    BaiMax  
       2018-06-30 18:40:02 +08:00 via Android
    还有一种方案是通过 telegram 转发的,没试过,不清楚体验怎么样。教程链接 https://51.ruyo.net/8054.html
    boileryao
        21
    boileryao  
       2018-07-01 01:06:34 +08:00
    我当时微信二面的时候问过面试官的, 难道是国内不一样或者改了, 明天我再问问……
    @skylancer @yipkwong
    yipkwong
        22
    yipkwong  
    OP
       2018-07-01 18:11:46 +08:00 via Android
    @boileryao 谢谢,国内这个做的还是跟 tg 个人感觉有点距离
    yipkwong
        23
    yipkwong  
    OP
       2018-07-01 18:13:57 +08:00 via Android
    @BaiMax 那个软件我会试下,谢谢,tg 转发的话原理是转发网页版的信息,然而网页版有一些东西不能收到,所以有缺点,只是想走 gcm 省一下电,不知道有没有什么优的办法
    honeycomb
        24
    honeycomb  
       2018-07-01 20:48:09 +08:00 via Android
    @yipkwong 当时确实能观察到 8.0 效果比较差(经常拉不起来),8.1 的效果好
    skylancer
        25
    skylancer  
       2018-07-02 08:37:27 +08:00
    @boileryao 优先长连接,长连接挂了才会走 FCM
    ccl945
        26
    ccl945  
       2018-07-02 09:22:27 +08:00
    墙内各种小米推送,华为推送啥的,gcm 不存在的。
    yipkwong
        27
    yipkwong  
    OP
       2018-07-03 12:38:31 +08:00 via Android
    @honeycomb 难道 8.1 比 8.0 稳定?
    honeycomb
        28
    honeycomb  
       2018-07-03 13:00:53 +08:00 via Android
    @yipkwong 我有这些猜测:

    1,估计是前面说的那个 bug 导致的,8.0 里微信的 service 杀不光(杀掉了微信的 push service,但别的 service 还有存活,便拒绝接受从 gcm 过来的信号),间接导致 gcm 信息没有拉起微信

    2,另一个可能性是 run_in_background 的限制并没有最初 dianne hackborn 那个 commit 说得那么有力(倒是 Android 9 那个新增的 run_any_in_background 可能才真正达到了完整的效果),导致 8.1 拉得起微信而 8.0 常常拉不起。
    yipkwong
        29
    yipkwong  
    OP
       2018-07-04 09:58:12 +08:00 via Android
    @honeycomb 表示自己的 miui 系统最新跟新到安卓 8.0 没有 8.1,绝望
    honeycomb
        30
    honeycomb  
       2018-07-04 10:07:08 +08:00 via Android
    @yipkwong 避免使用小米的修改版 Android
    yipkwong
        31
    yipkwong  
    OP
       2018-07-04 11:02:27 +08:00 via Android
    @honeycomb 为什么?你用安卓吗,用的话用原生吗?
    honeycomb
        32
    honeycomb  
       2018-07-04 11:14:19 +08:00 via Android
    @yipkwong
    小米的 appops 有问题(会自动复原默认值),即便没有 8.0 那个 bug,事实上没法用 run_in_background 的办法。

    我确实用原生的
    yipkwong
        33
    yipkwong  
    OP
       2018-07-04 15:57:20 +08:00 via Android
    @honeycomb 原生好用吗?用啥原生,推荐一下,谢谢
    philobscur
        34
    philobscur  
       2018-07-04 22:02:56 +08:00
    @yipkwong miui 虽然个人嫌弃广告太多,但是本地化做的应该是国内最好的。如果不是肉身翻墙没必要强迫自己去用原生的。
    yipkwong
        35
    yipkwong  
    OP
       2018-07-04 23:35:07 +08:00 via Android
    @philobscur 我平时用 miui 也有翻墙,只想想让微信走下 gcm 但是效果非常不理想,有没有什么解决方法吗?
    honeycomb
        36
    honeycomb  
       2018-07-05 12:06:40 +08:00 via Android
    @yipkwong
    原生不见得好用。我也不推荐亲儿子(硬件质量比较差,原生系统不一定喜欢),除非确实真的想用。

    小米两月份的时候做了一个投票(当然是在推上)问 MIUI 和 Android one 里面二选一,大多数选了原生 Android,小米很快删掉了这个投票。
    yipkwong
        37
    yipkwong  
    OP
       2018-07-05 17:49:24 +08:00 via Android
    @honeycomb 你用啥原生系统?
    NaiveSimpleYoung
        38
    NaiveSimpleYoung  
       2018-07-05 18:21:23 +08:00
    @honeycomb 233333333333333
    honeycomb
        39
    honeycomb  
       2018-07-05 18:51:56 +08:00 via Android
    @yipkwong 亲儿子系列
    skylancer
        40
    skylancer  
       2018-07-06 09:43:49 +08:00
    @honeycomb 我曾经用过,AppOps 并没有问题... 至于为什么是曾经用过,那是个悲伤的故事
    skylancer
        41
    skylancer  
       2018-07-06 09:45:19 +08:00
    @crayygy 主动杀的可以推的到,前提是使用高优先级推送,GMS 会发 intnet 拉起来。然而微信并没有使用高优先级推送
    yipkwong
        42
    yipkwong  
    OP
       2018-07-06 09:45:41 +08:00 via Android
    @honeycomb 搞得我想用亲儿子了,哈哈哈
    yipkwong
        43
    yipkwong  
    OP
       2018-07-06 09:46:23 +08:00 via Android
    @skylancer 那就是说微信用 gcm 推送是不可能的咯??
    skylancer
        44
    skylancer  
       2018-07-06 09:51:00 +08:00
    @yipkwong 我自己用的大法,AppOps 干了 run_in_background 感觉效果很不错,不知道是不是有做修改什么的
    yipkwong
        45
    yipkwong  
    OP
       2018-07-06 09:54:28 +08:00 via Android
    @skylancer miui 可以做到吗?
    skylancer
        46
    skylancer  
       2018-07-06 09:57:03 +08:00
    @yipkwong 我觉得 MIUI 你基本不用怎么调教了吧,你是怎么体验到耗电问题的?
    yipkwong
        47
    yipkwong  
    OP
       2018-07-06 19:44:46 +08:00 via Android
    @skylancer 耗电还行,主要想再省电一点,有没有什么方法吗,miui
    Planehi
        48
    Planehi  
       2018-07-07 10:10:48 +08:00 via Android
    昨天刚配置了 gcmformojo 正在使用中
    yipkwong
        49
    yipkwong  
    OP
       2018-07-07 10:27:11 +08:00 via Android
    @Planehi 自己在服务器里搭建吗?
    Planehi
        50
    Planehi  
       2018-07-07 10:31:46 +08:00 via Android
    @yipkwong 是的
    yipkwong
        51
    yipkwong  
    OP
       2018-07-07 11:12:06 +08:00 via Android
    @Planehi 那些手机语音通话接受的到吗?
    Planehi
        52
    Planehi  
       2018-07-07 12:44:22 +08:00 via Android
    @yipkwong 收不到,只能收文字信息
    yipkwong
        53
    yipkwong  
    OP
       2018-07-07 14:13:31 +08:00 via Android
    @Planehi 好吧,那还是有缺点的
    skylancer
        54
    skylancer  
       2018-07-07 16:27:48 +08:00
    @yipkwong 我觉得没什么可以折腾的了,如果想省电的话,其实建议自搭梯子,然后把 libev 的超时时间改到半小时以上,因为默认 60 秒天天重连还不如不用梯子
    yipkwong
        55
    yipkwong  
    OP
       2018-07-07 17:10:06 +08:00 via Android
    @skylancer 好的,谢谢
    zxq1002
        56
    zxq1002  
       2018-11-06 19:06:26 +08:00
    删掉 telegram X 进程后,426 能看到有收到 gcm 记录,但没有收到通知消息是杀原因?不能强杀进程么
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3326 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 00:05 · PVG 08:05 · LAX 16:05 · JFK 19:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.