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

iOS 13 后大陆地区基本告别 voip 推送(pushkit)了, iOS 开发越来越简单了😂

  •  
  •   fvckDaybyte2 · 2019-10-16 10:14:11 +08:00 · 34759 次点击
    这是一个创建于 1625 天前的主题,其中的信息可能已经有所发展或是发生改变。
    根据苹果的文档,voip 推送后必须跟随 calllkit 的调用,否则你的应用会被强行终止,多次违反后甚至再也收不到推送。而 callkit 因为众所周知的原因已经在大陆被禁,因此 voip 推送也基本无法在大陆使用。根据苹果文档提示,只能用普通推送( usernotifications )来代替 voip 推送( pushkit )。影响所有用 xcode11 编译的应用,xcode10 编译的暂时不受此限制,但是目前 app store 最低的编译要求为 xcode10.2,不用 xcode11 编译也许很快就无法上架。

    目前微信依然还在用 pushkit 接受语音来电,显然还在使用 xcode10,因此也不可能支持 dark mode。

    "
    Important
    On iOS 13.0 and later, if you fail to report a call to CallKit, the system will terminate your app. Repeatedly failing to report calls may cause the system to stop delivering any more VoIP push notifications to your app. If you want to initiate a VoIP call without using CallKit, register for push notifications using the UserNotifications framework instead of PushKit. For more information, see UserNotifications.
    "

    来源:
    https://developer.apple.com/documentation/pushkit/pkpushregistrydelegate/2875784-pushregistry?language=objc
    第 1 条附言  ·  2019-10-16 11:04:50 +08:00
    感觉苹果也是为了限制 voip 推送被滥用吧,因为 voip 推送是比普通推送更加迅速且耗电的,只要推送到达必定唤醒,不受任何后台运行政策限制,而且用户没有任何办法阻止,所以有些 voip 应用甚至在收发消息时也用 voip 推送,造成滥用……不过绑定 callkit 应该是没考虑中国国情吧……
    79 条回复    2020-11-24 16:15:54 +08:00
    efin
        1
    efin  
       2019-10-16 10:36:49 +08:00
    大陆地区 callkit 的限制是基于什么?机器版本还是账号还是系统设定里的区域?
    行货+美区 ID-->?
    港行 /美行+国区 ID-->?
    港行 /美行+美区 ID-->?
    oxoxoxox
        2
    oxoxoxox  
       2019-10-16 10:40:57 +08:00   ❤️ 3
    @efin #1 各个 app 内部自行做的限制,比如微信是看绑定的手机号所属的国家或地区,你用 Google Voice 或其他国外公司做的 app 还是能使用 CallKit 的
    mikeven
        3
    mikeven  
       2019-10-16 10:48:50 +08:00
    能不能给港行用户一条活路😂😂😂。还有这种只禁止 iOS 不禁安卓什么情况,安卓才是绝大多数啊。运营商傻吗
    fvckDaybyte2
        4
    fvckDaybyte2  
    OP
       2019-10-16 10:50:07 +08:00   ❤️ 1
    @efin 基于 app store 上架规则,只要你集成了 callkit 就无法在中国区 app store 上架,但是有些 app 不想区分国际版国内版,审核的时候也可以说,我的 app 通过 xxxx 机制检测在大陆就不会激活 callkit,审核人员觉得合理后也会让你上架大陆市场(我就是这么干的)。

    所以你的问题答案不是固定的,就像楼上说的,微信用绑定的手机号判断,有的 app 用 sim 卡的 country code 判断,我用手机设置里的区域来判断
    liuzhaowei55
        5
    liuzhaowei55  
       2019-10-16 10:50:34 +08:00
    @mikeven 因为安卓做的烂啊,有也不能用,用也不好用。。。
    mikeven
        6
    mikeven  
       2019-10-16 10:50:43 +08:00
    @oxoxoxox 意思是国行的 iOS 如果用 gvoice 其实是有 callkit 的吗
    ajyz
        7
    ajyz  
       2019-10-16 10:51:00 +08:00 via iPhone
    好,希望要么妥协国内可用 callkit,要么索性微信就不要支持语音来电推送了,现在这种不能直接蓝牙接听,而某些 SB 客户整天就喜欢打微信语音(拨个正常电话能死啊,而且还是工作上的正事),真的不胜其烦,所以我索性语音都关了。
    mschultz
        8
    mschultz  
       2019-10-16 10:53:02 +08:00
    @efin #1 App 内部限制。
    例如,国行 iPhone + 国区 App Store + 海外手机注册的微信号 = 可以用 CallKit.
    ajyz
        9
    ajyz  
       2019-10-16 10:53:40 +08:00 via iPhone   ❤️ 2
    @mikeven 你用微信也有 callkit 啊,前提是要么安装较老的无限制版,要么用非大陆手机号注册的微信号
    Leonard
        10
    Leonard  
       2019-10-16 10:59:06 +08:00
    @mschultz 我微信绑的 Google Voice 也不能用 callkit 啊
    janus77
        11
    janus77  
       2019-10-16 11:01:42 +08:00
    非开发者来问个小问题:callkit 大概是做啥的,在微信上表现为什么?如果微信语音不用 callkit 了,会变成什么样?(针对普通用户来说)
    mschultz
        12
    mschultz  
       2019-10-16 11:03:21 +08:00
    @Leonard #10 用海外微信号注册,不是换绑,微信貌似是注册时所用的手机号归属地定终身。
    wunonglin
        13
    wunonglin  
       2019-10-16 11:06:07 +08:00   ❤️ 1
    leshijiazu
        14
    leshijiazu  
       2019-10-16 11:07:40 +08:00 via iPhone
    @Leonard 要注册的时候就是境外号码。后来改的也不行。
    mschultz
        15
    mschultz  
       2019-10-16 11:08:21 +08:00   ❤️ 1
    @janus77 #11,你的微信没有在前台的情况下:

    - 使用 CallKit 表现为,别人给你打微信语音时你是这个界面:
    http://netsmell.com/wp-content/uploads/2017/12/8864575689c23190efcf8b49ec42982b-728x609.png
    - 不用 CallKit 表现为,别人给你打微信语音时你仅收到这样的提醒:
    http://netsmell.com/wp-content/uploads/2017/12/8864575689c23190efcf8b49ec42982b-728x609.png

    图片所在原文
    https://netsmell.com/post/weixin-update.html
    oxoxoxox
        16
    oxoxoxox  
       2019-10-16 11:08:24 +08:00
    @mikeven #6 有的,我就是国行手机+GV,有 CallKit
    @Leonard #10 需要微信注册的时候就是用的 GV 账号,更改手机号为国外号码好像是不行的
    @janus77 #11 有 CallKit,微信有语音或视频呼叫的时候,界面就和来电界面一样;没有 CallKit,就只是一条系统推送的通知
    luckysonyu99
        17
    luckysonyu99  
       2019-10-16 11:09:15 +08:00
    Google Voice 好像不能直接注册微信的吧,楼上的使用 GV 号码而且有微信的 callkit 是怎么实现的?先用海外手机号注册再换绑 GV ?
    mschultz
        18
    mschultz  
       2019-10-16 11:10:07 +08:00
    @mschultz #15 文章居然是少数派……
    d0m2o08
        19
    d0m2o08  
       2019-10-16 11:10:20 +08:00
    @janus77 我不是 ios 开发者,说下我的理解,支持 callkit 的时候,别人用微信给你打电话,ios 会像来电话一样通知你有微信语音通话,其它附加设备如手表,蓝牙耳机等都有提醒。不支持 callkit 之后别人给你发语音通话,只能像来消息一样弹个通知,手表也没了反应。
    mschultz
        20
    mschultz  
       2019-10-16 11:11:49 +08:00
    @luckysonyu99 #17 我是香港手机号注册,或者其他什么实体海外手机号码注册。GV 等 VoIP 号码注册微信容易被秒封
    luckysonyu99
        21
    luckysonyu99  
       2019-10-16 11:15:40 +08:00
    @mschultz #20 我说的也是这样呀,但是楼上一帮说着用微信用 GV 号码而且有 callkit 功能的,是先用海外手机号注册然后换绑 GV 吗,不然我想不到其他的方法。
    但是既然可以用海外手机号注册了为什么还要换 GV 号码呢?
    echo314
        22
    echo314  
       2019-10-16 11:20:29 +08:00 via iPhone
    @luckysonyu99 我是以前直接用 GV 注册的,后期还改绑过国内号码,现在又改回 GV,现在微信通知有 callkit。
    mschultz
        23
    mschultz  
       2019-10-16 11:21:22 +08:00
    @luckysonyu99 #21 hh,我和你的想法是一致的。可能因为很久之前一段时间风控不严 GV 注册微信号还不是秒封?(参考这两天云南大量封微信号的事,电信诈骗这块越来越敏感了)
    另一方面,GV 号申请的时候可以选号,有些人多少有点靓号,可能为了「各类海外服务统一绑定一个 GV 靓号」的想法……

    总之我觉得除了看着舒服之外可能没什么必须绑 GV 的理由。
    gromit1337
        24
    gromit1337  
       2019-10-16 11:29:56 +08:00   ❤️ 1
    callkit 就是接电话直接就是和普通电话一样的机制了,直接威胁到电信运营商的地位,先问问工信部答不答应
    luckysonyu99
        25
    luckysonyu99  
       2019-10-16 11:29:58 +08:00
    @echo314 #22
    @mschultz #23
    原来还有用 GV 注册微信不封号的时候,看来是我了解 GV 太晚了...
    ashong
        26
    ashong  
       2019-10-16 11:33:56 +08:00 via iPhone   ❤️ 1
    @mikeven 确认国行 iOS 有 callkit,自搭的 nextcloud talk 可以正常使用
    surfin9
        27
    surfin9  
       2019-10-16 11:34:17 +08:00   ❤️ 1
    微信不用 darkmode 主要是面子问题。毕竟老板都在公众场合说过不做了,是一个生活方式,如果太亮了眼睛不舒服就说明你需要休息了。
    坐等打脸。
    lnkn
        28
    lnkn  
       2019-10-16 11:35:51 +08:00
    @mikeven #6 一开始注册才行,后面改版是不可以的
    ftu
        29
    ftu  
       2019-10-16 11:47:11 +08:00
    @mikeven 我非常认同你的看法,天朝对苹果禁这禁那,美国对华为禁这禁那
    lyoume
        30
    lyoume  
       2019-10-16 11:53:53 +08:00
    微信要使用 callkit 功能,必须要在注册的时候就填写国外号码。
    如果最开始注册用的国内号,后期换绑成国外号,同样还是无法使用 callkit。
    lucifer9
        31
    lucifer9  
       2019-10-16 11:56:01 +08:00
    话说你们就一个微信用这玩意么
    正常的 voip 应用大把的是不是都要挂了啊
    nathanw
        32
    nathanw  
       2019-10-16 12:29:22 +08:00 via iPhone
    是不是可以这样,report incoming call 然后立马 end call
    tozp
        33
    tozp  
       2019-10-16 13:02:37 +08:00
    @mschultz #18 用境外号码注册的微信会启用 callkit,否则不会。
    realpg
        34
    realpg  
       2019-10-16 13:10:59 +08:00
    @luckysonyu99 #25
    现在 GV 注册也有办法不封号 只是不敢瞎传而已……
    hronro
        35
    hronro  
       2019-10-16 13:13:33 +08:00
    有没有人和我一样现在还在用 6.6.1 版本的微信的?这个版本能用 callkit,很爽
    zhuangku556
        36
    zhuangku556  
       2019-10-16 13:20:50 +08:00
    @lucifer9 周围人都用微信有什么办法?
    luckysonyu99
        37
    luckysonyu99  
       2019-10-16 13:21:32 +08:00
    @realpg #34 毕竟现有的微信已经是国内号码注册了,为了一个 callkit 功能再去找 GV 重新注册不封号的方法好像不是太合适,除非刚好有需要新的微信的人。
    lihongming
        38
    lihongming  
       2019-10-16 13:46:11 +08:00 via iPhone
    @nathanw 要是有资格 report,又何必 end ?

    现在的问题是只要用了 callkit 就不能上架国区
    allenforrest
        39
    allenforrest  
       2019-10-16 13:56:57 +08:00
    在 iOS 13 正式版刚发布也是发现了这个问题,后来就回退用 Xcode10 继续 build 版本了。
    现在的打算是放弃 VoIP Push,该用普通 Push 了,反正都是没有 CallKit 的 InCall Screen 效果,换普通 Push 后,效果就是点击通知后,不能立马出接听界面,得等 App 启动和登录等等一堆事,变慢了,体验差了些,但也总还是能用。
    就酱。
    fvckDaybyte2
        40
    fvckDaybyte2  
    OP
       2019-10-16 14:06:21 +08:00 via iPhone
    @allenforrest 可以用 remote notification 在 background 提前唤醒……确实这个问题早就在 WWDC 里讲过了,可惜我没看😂
    haozes
        41
    haozes  
       2019-10-16 14:19:26 +08:00
    https://itunes.apple.com/cn/app/id1462516460?mt=8

    我这 App 就是用的 VOIP PUSH,暂时也没受影响啊
    haozes
        42
    haozes  
       2019-10-16 14:21:28 +08:00
    看样子也活不久了,唉
    mikeven
        43
    mikeven  
       2019-10-16 14:25:55 +08:00 via iPhone
    @ashong 这个需要搭建啊,国区还有木有那个 APP 直接注册了就能用 callkit 的啊
    cmobiooo
        44
    cmobiooo  
       2019-10-16 14:27:30 +08:00
    我国行的机器+美区 id 是可以用 GV 的 Callkit 的
    qiaga
        45
    qiaga  
       2019-10-16 16:37:18 +08:00
    @lyoume #30 如果用香港号码注册了微信,然后后面换绑国内号码,callkit 会消失不?
    x86
        46
    x86  
       2019-10-16 16:39:39 +08:00 via iPhone
    问下,国内不是关了吗?但昨天火车站看到一位阿姨打电话下面显示微信啥啥啥(后面看了几眼确认)
    skull
        47
    skull  
       2019-10-16 19:14:50 +08:00 via iPhone
    @hronro 可以好多的小程序么有办法用了,还有就是没有悬浮按键,不方便
    jakezh
        48
    jakezh  
       2019-10-16 21:00:25 +08:00
    我是国内手机号注册的
    但是我一直能用 callkit 啊
    看起来不是单一的用手机号判断
    lyoume
        49
    lyoume  
       2019-10-16 21:17:55 +08:00
    @qiaga #45 现在不太清楚了,之前换绑后没问题。我有一个国外号长时间未登录被封了,现在没法测试。
    Silently
        50
    Silently  
       2019-10-16 21:39:04 +08:00
    刚用香港号码注册一个新微信 可以使用系统推送语音 。。。换绑号码的无此功能
    xhqpp
        51
    xhqpp  
       2019-10-16 21:54:53 +08:00
    @jakezh 你是国行机国区商店吗
    jakezh
        52
    jakezh  
       2019-10-16 21:57:39 +08:00
    @xhqpp #51 非国行机,但是应该是国区商店吧 好几个账号切换着用 记不太清了
    dai640
        53
    dai640  
       2019-10-16 23:45:20 +08:00
    在很久很久之前,曾经有很多在免费的,在 PC 上可以直接拨打电话号码的应用,那时候甚至还没有出现 iPhone,后来,后来消失了……
    akring
        54
    akring  
       2019-10-17 00:07:33 +08:00
    @surfin9 这种说法明显是张小龙的借口吧,微信现在说的好听是非常克制,说的难听就是固步自封,体量大了任何改变都显得小心翼翼,但是体量放在这,家人朋友同事都或多或少的需要依赖微信联系,再不好用也得凑合着用
    akring
        55
    akring  
       2019-10-17 00:10:47 +08:00
    @lihongming 所以感觉很有可能微信会联系苹果,特批带 callkit 上架,或者单独维护一个国际版(这个不太现实)
    liduoduo
        56
    liduoduo  
       2019-10-17 00:21:00 +08:00
    @efin 亲测美国手机号码注册的微信是可以使用 callkit 的 测试机港版 xsm
    imzcg
        57
    imzcg  
       2019-10-17 00:26:55 +08:00 via Android

    还以为苹果的推送被禁了。hh
    chiaf
        58
    chiaf  
       2019-10-17 00:28:14 +08:00
    iOS 开发又有人要了
    diggerdu
        59
    diggerdu  
       2019-10-17 02:07:21 +08:00 via iPhone
    @akring 应该不可能 禁 callkit 本意就是保护运营商利益 如果微信能用那就没几个人打电话了
    bclerdx
        60
    bclerdx  
       2019-10-17 07:30:19 +08:00 via Android
    @ajyz 确实,有些 sb 用户,因为他认为便宜,大家都用微信语音,因为流量便宜,流量多呗。
    modayu
        61
    modayu  
       2019-10-17 08:30:52 +08:00 via iPhone
    还好越狱了能用 callkit
    boywang004
        62
    boywang004  
       2019-10-17 09:29:55 +08:00   ❤️ 4
    早些年为了保护运营商利益,国行智能手机(上一个时代的)还阉割 Wi-Fi 呢……呵呵呵呵。
    我大阉割国什么不做。
    JoeoooLAI
        63
    JoeoooLAI  
       2019-10-17 10:22:32 +08:00
    @efin 感觉应该与 ID 和手机是否行货无关,我用 WhatsApp 国内 ID +行货 Callkit 照样能用。 我是多希望 能像 skype 和 WhatsApp 一样 能在自带通信录就能用这些软件打电话出去。老实说现在运营商策略都侧重在流量啦,通话分钟数基本白送的,还这样护着是真的。。
    lcvs
        64
    lcvs  
       2019-10-17 15:24:08 +08:00
    被工信部禁止了~
    artandlol
        66
    artandlol  
       2019-10-17 16:30:35 +08:00 via Android
    @mschultz 旧更换电话绑定就不会了
    tangpizi
        67
    tangpizi  
       2019-10-17 20:44:47 +08:00
    我和我老婆都换绑了香港号码,结果我的有 call kit 我老婆的没有。。。这事怎么回事??
    Lentin
        68
    Lentin  
       2019-10-17 21:18:30 +08:00
    @tangpizi 以微信注册时的为准,用大陆手机号注册的就没有,其他地区就算绑回去也没关系的
    internelp
        69
    internelp  
       2019-11-18 16:42:21 +08:00
    @ashong 您用的是什么版本,为啥我测试没有 callkit, 难道 ios13 不支持了?
    ashong
        70
    ashong  
       2019-11-18 17:24:56 +08:00
    @internelp 13.2.2,只是国区的 app 被阉割了
    tracesnow001
        71
    tracesnow001  
       2019-12-21 22:30:37 +08:00
    看了一圈,国行用外区手机号+外区 appstore 的软件就可以解锁 callkit 和 Facetime audio 了是这个意思吧。即使是港行的机器,如果用国区手机号国区 appstore 的软件,也没有 callkit 和 facetime audio
    fvckDaybyte2
        72
    fvckDaybyte2  
    OP
       2019-12-22 00:09:18 +08:00 via iPhone
    @tracesnow001 不是,港行无论如何都有 FaceTime audio
    wtdu1992
        73
    wtdu1992  
       2020-01-18 19:07:39 +08:00
    是不是现在 app 中不使用非官方提供的 CallKit,voip push 就用不了
    mxi1
        74
    mxi1  
       2020-03-22 13:39:10 +08:00 via iPhone
    @tracesnow001 #71 国行机器用任何方式都无法解锁 FaceTime audio ;
    MicroGalaxy
        75
    MicroGalaxy  
       2020-03-23 03:38:50 +08:00 via iPhone
    微信更新了,就是不用 callkit 也收到推送
    astkaasa
        76
    astkaasa  
       2020-03-23 05:28:15 +08:00 via iPhone
    钉钉有 callkit 啊
    shenwu35
        77
    shenwu35  
       2020-03-26 10:14:30 +08:00
    走普通文本推送
    Damon4V
        78
    Damon4V  
       2020-11-24 16:15:36 +08:00
    ***********************************************
    Damon4V
        79
    Damon4V  
       2020-11-24 16:15:54 +08:00
    口吐芬芳
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5957 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 02:08 · PVG 10:08 · LAX 19:08 · JFK 22:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.