苹果 voip pushkit 推送如何知道客户端已经被卸载 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
fvckDaybyte2
V2EX    iDev

苹果 voip pushkit 推送如何知道客户端已经被卸载

  •  
  •   fvckDaybyte2 2019-04-15 17:00:43 +08:00 6952 次点击
    这是一个创建于 2418 天前的主题,其中的信息可能已经有所发展或是发生改变。
    卸载后尝试进行推送,苹果服务器依然是 200 推送成功,导致主叫方一直在静音等待,如果没卸载,被叫被推送唤醒后会发送彩铃音频流给主叫。

    预期卸载了,推送时应该返回 410 或者 400 来提示 token 无效,这样主叫方就可以播放“您拨打的是空号”的提示音了,而不是静音等待……苹果这么设计是让我们自己做周期唤醒检测么,每小时推送唤醒检查一次?这样岂不是浪费电?
    11 条回复    2019-04-16 00:12:38 +08:00
    ai277014717
        1
    ai277014717  
       2019-04-15 17:21:22 +08:00
    无法检测
    ai277014717
        2
    ai277014717  
       2019-04-15 17:22:01 +08:00
    因为卸载的时候 App 没有机会处理事情
    finab
        3
    finab  
       2019-04-15 17:33:20 +08:00
    VoIP 应用不是可以后台建立一个 TCP 连接吗 ? 这个 TCP 连接被系统接管不会被杀一直存在

    另外收到这个推送时,APP 应该被激活了,可以执行一点代码,发个信号给服务端证明我收到了推送
    如果发了推送,被叫方没有回应,则证明不在线

    没开发过 VoIP 应用,上面仅供参考
    skylancer
        4
    skylancer  
       2019-04-15 17:38:19 +0800
    我记得 VOIP Pushkit 发起推送的时候是会拉起 App 的,剩下的活自己干就行
    fvckDaybyte2
        5
    fvckDaybyte2  
    OP
       2019-04-15 18:34:03 +08:00
    @ai277014717 不是让 app 处理,预期是让苹果 apns 返回 token invalid ……
    fvckDaybyte2
        6
    fvckDaybyte2  
    OP
       2019-04-15 18:34:52 +08:00
    @skylancer 正如我所说,唤醒后会发送彩铃音频流给对方,问题就是我怎么知道有没有卸载?
    fvckDaybyte2
        7
    fvckDaybyte2  
    OP
       2019-04-15 18:36:43 +08:00
    @finab 很早就不让 tcp 长链接了,而且我们 server 也不支持 tcp,信令和 payload 都是 udp。感谢回复。
    finab
        8
    finab  
       2019-04-15 19:05:13 +08:00
    @fvckDaybyte2

    客户端收到推送唤醒时发送一个信号给后端。
    后端发送推送后等待信号, 如果一定时间内没收到这个信号,则认为客户端不在线, 被叫方没网或者应用被卸载。
    然后提示主叫方拨打的号码无法接通,这样总比主叫方一直等着要好吧
    skylancer
        9
    skylancer  
       2019-04-15 19:07:58 +08:00
    @fvckDaybyte2 你换个思路啊,我没记错 voip 推送是可以带参数唤起 App 的,等收到回应再播放彩铃给呼叫方,没收到回应就看你想怎么说了
    fvckDaybyte2
        10
    fvckDaybyte2  
    OP
       2019-04-16 00:05:56 +08:00
    @skylancer 现在就是这个机制,和你说的一模一样……
    fvckDaybyte2
        11
    fvckDaybyte2  
    OP
       2019-04-16 00:12:38 +08:00
    @finab 如果网络不好 pushkit 会延时 10 秒以上甚至 20 秒,就是指这段时间的静音。如果能预先知道已经卸载,则完全可以避免。如果这次推送没响应,不知道对方是关机 /网络不好还是卸载,下次还是无法避免这 20 秒静音,无从判断,总不能上机器学习吧…
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5191 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 52ms UTC 07:40 PVG 15:40 LAX 23:40 JFK 02:40
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86