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 · Oct 16, 2019 · 37545 views
    This topic created in 2580 days ago, the information mentioned may be changed or developed.
    根据苹果的文档,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
    Supplement 1  ·  Oct 16, 2019
    感觉苹果也是为了限制 voip 推送被滥用吧,因为 voip 推送是比普通推送更加迅速且耗电的,只要推送到达必定唤醒,不受任何后台运行政策限制,而且用户没有任何办法阻止,所以有些 voip 应用甚至在收发消息时也用 voip 推送,造成滥用……不过绑定 callkit 应该是没考虑中国国情吧……
    79 replies  •  2020-11-24 16:15:54 +08:00
    efin
    efin
    Oct 16, 2019
    1
    大陆地区 callkit 的限制是基于什么?机器版本还是账号还是系统设定里的区域?
    行货+美区 ID-->?
    港行 /美行+国区 ID-->?
    港行 /美行+美区 ID-->?
    oxoxoxox
    oxoxoxox
    Oct 16, 2019❤️3
    2
    @efin #1 各个 app 内部自行做的限制,比如微信是看绑定的手机号所属的国家或地区,你用 Google Voice 或其他国外公司做的 app 还是能使用 CallKit 的
    mikeven
    mikeven
    Oct 16, 2019
    3
    能不能给港行用户一条活路😂😂😂。还有这种只禁止 iOS 不禁安卓什么情况,安卓才是绝大多数啊。运营商傻吗
    fvckDaybyte2
    fvckDaybyte2
    OP
    Oct 16, 2019❤️1
    4
    @efin 基于 app store 上架规则,只要你集成了 callkit 就无法在中国区 app store 上架,但是有些 app 不想区分国际版国内版,审核的时候也可以说,我的 app 通过 xxxx 机制检测在大陆就不会激活 callkit,审核人员觉得合理后也会让你上架大陆市场(我就是这么干的)。

    所以你的问题答案不是固定的,就像楼上说的,微信用绑定的手机号判断,有的 app 用 sim 卡的 country code 判断,我用手机设置里的区域来判断
    liuzhaowei55
    liuzhaowei55
    Oct 16, 2019
    5
    @mikeven 因为安卓做的烂啊,有也不能用,用也不好用。。。
    mikeven
    mikeven
    Oct 16, 2019
    6
    @oxoxoxox 意思是国行的 iOS 如果用 gvoice 其实是有 callkit 的吗
    ajyz
    ajyz
    Oct 16, 2019 via iPhone
    7
    好,希望要么妥协国内可用 callkit,要么索性微信就不要支持语音来电推送了,现在这种不能直接蓝牙接听,而某些 SB 客户整天就喜欢打微信语音(拨个正常电话能死啊,而且还是工作上的正事),真的不胜其烦,所以我索性语音都关了。
    mschultz
    mschultz
    Oct 16, 2019
    8
    @efin #1 App 内部限制。
    例如,国行 iPhone + 国区 App Store + 海外手机注册的微信号 = 可以用 CallKit.
    ajyz
    ajyz
    Oct 16, 2019 via iPhone❤️2
    9
    @mikeven 你用微信也有 callkit 啊,前提是要么安装较老的无限制版,要么用非大陆手机号注册的微信号
    Leonard
    Leonard
    Oct 16, 2019
    10
    @mschultz 我微信绑的 Google Voice 也不能用 callkit 啊
    rb6221
    rb6221
    Oct 16, 2019
    11
    非开发者来问个小问题:callkit 大概是做啥的,在微信上表现为什么?如果微信语音不用 callkit 了,会变成什么样?(针对普通用户来说)
    mschultz
    mschultz
    Oct 16, 2019
    12
    @Leonard #10 用海外微信号注册,不是换绑,微信貌似是注册时所用的手机号归属地定终身。
    shakaraka
    shakaraka
    Oct 16, 2019❤️1
    13
    leshijiazu
    leshijiazu
    Oct 16, 2019 via iPhone
    14
    @Leonard 要注册的时候就是境外号码。后来改的也不行。
    mschultz
    mschultz
    Oct 16, 2019❤️1
    15
    @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
    oxoxoxox
    Oct 16, 2019
    16
    @mikeven #6 有的,我就是国行手机+GV,有 CallKit
    @Leonard #10 需要微信注册的时候就是用的 GV 账号,更改手机号为国外号码好像是不行的
    @janus77 #11 有 CallKit,微信有语音或视频呼叫的时候,界面就和来电界面一样;没有 CallKit,就只是一条系统推送的通知
    luckysonyu99
    luckysonyu99
    Oct 16, 2019
    17
    Google Voice 好像不能直接注册微信的吧,楼上的使用 GV 号码而且有微信的 callkit 是怎么实现的?先用海外手机号注册再换绑 GV ?
    mschultz
    mschultz
    Oct 16, 2019
    18
    @mschultz #15 文章居然是少数派……
    d0m2o08
    d0m2o08
    Oct 16, 2019
    19
    @janus77 我不是 ios 开发者,说下我的理解,支持 callkit 的时候,别人用微信给你打电话,ios 会像来电话一样通知你有微信语音通话,其它附加设备如手表,蓝牙耳机等都有提醒。不支持 callkit 之后别人给你发语音通话,只能像来消息一样弹个通知,手表也没了反应。
    mschultz
    mschultz
    Oct 16, 2019
    20
    @luckysonyu99 #17 我是香港手机号注册,或者其他什么实体海外手机号码注册。GV 等 VoIP 号码注册微信容易被秒封
    luckysonyu99
    luckysonyu99
    Oct 16, 2019
    21
    @mschultz #20 我说的也是这样呀,但是楼上一帮说着用微信用 GV 号码而且有 callkit 功能的,是先用海外手机号注册然后换绑 GV 吗,不然我想不到其他的方法。
    但是既然可以用海外手机号注册了为什么还要换 GV 号码呢?
    B4PLpPSsR4voMdx0
    B4PLpPSsR4voMdx0
    Oct 16, 2019 via iPhone
    22
    @luckysonyu99 我是以前直接用 GV 注册的,后期还改绑过国内号码,现在又改回 GV,现在微信通知有 callkit。
    mschultz
    mschultz
    Oct 16, 2019
    23
    @luckysonyu99 #21 hh,我和你的想法是一致的。可能因为很久之前一段时间风控不严 GV 注册微信号还不是秒封?(参考这两天云南大量封微信号的事,电信诈骗这块越来越敏感了)
    另一方面,GV 号申请的时候可以选号,有些人多少有点靓号,可能为了「各类海外服务统一绑定一个 GV 靓号」的想法……

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

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

    我这 App 就是用的 VOIP PUSH,暂时也没受影响啊
    haozes
    haozes
    Oct 16, 2019
    42
    看样子也活不久了,唉
    mikeven
    mikeven
    Oct 16, 2019 via iPhone
    43
    @ashong 这个需要搭建啊,国区还有木有那个 APP 直接注册了就能用 callkit 的啊
    cmobiooo
    cmobiooo
    Oct 16, 2019
    44
    我国行的机器+美区 id 是可以用 GV 的 Callkit 的
    qiaga
    qiaga
    Oct 16, 2019
    45
    @lyoume #30 如果用香港号码注册了微信,然后后面换绑国内号码,callkit 会消失不?
    x86
    x86
    Oct 16, 2019 via iPhone
    46
    问下,国内不是关了吗?但昨天火车站看到一位阿姨打电话下面显示微信啥啥啥(后面看了几眼确认)
    skull
    skull
    Oct 16, 2019 via iPhone
    47
    @hronro 可以好多的小程序么有办法用了,还有就是没有悬浮按键,不方便
    jakezh
    jakezh
    Oct 16, 2019
    48
    我是国内手机号注册的
    但是我一直能用 callkit 啊
    看起来不是单一的用手机号判断
    lyoume
    lyoume
    Oct 16, 2019
    49
    @qiaga #45 现在不太清楚了,之前换绑后没问题。我有一个国外号长时间未登录被封了,现在没法测试。
    Silently
    Silently
    Oct 16, 2019
    50
    刚用香港号码注册一个新微信 可以使用系统推送语音 。。。换绑号码的无此功能
    xhqpp
    xhqpp
    Oct 16, 2019
    51
    @jakezh 你是国行机国区商店吗
    jakezh
    jakezh
    Oct 16, 2019
    52
    @xhqpp #51 非国行机,但是应该是国区商店吧 好几个账号切换着用 记不太清了
    dai640
    dai640
    Oct 16, 2019
    53
    在很久很久之前,曾经有很多在免费的,在 PC 上可以直接拨打电话号码的应用,那时候甚至还没有出现 iPhone,后来,后来消失了……
    akring
    akring
    Oct 17, 2019
    54
    @surfin9 这种说法明显是张小龙的借口吧,微信现在说的好听是非常克制,说的难听就是固步自封,体量大了任何改变都显得小心翼翼,但是体量放在这,家人朋友同事都或多或少的需要依赖微信联系,再不好用也得凑合着用
    akring
    akring
    Oct 17, 2019
    55
    @lihongming 所以感觉很有可能微信会联系苹果,特批带 callkit 上架,或者单独维护一个国际版(这个不太现实)
    liduoduo
    liduoduo
    Oct 17, 2019
    56
    @efin 亲测美国手机号码注册的微信是可以使用 callkit 的 测试机港版 xsm
    imzcg
    imzcg
    Oct 17, 2019 via Android
    57
    他
    还以为苹果的推送被禁了。hh
    usVexMownCzar
    usVexMownCzar
    Oct 17, 2019
    58
    iOS 开发又有人要了
    diggerdu
    diggerdu
    Oct 17, 2019 via iPhone
    59
    @akring 应该不可能 禁 callkit 本意就是保护运营商利益 如果微信能用那就没几个人打电话了
    bclerdx
    bclerdx
    Oct 17, 2019 via Android
    60
    @ajyz 确实,有些 sb 用户,因为他认为便宜,大家都用微信语音,因为流量便宜,流量多呗。
    modayu
    modayu
    Oct 17, 2019 via iPhone
    61
    还好越狱了能用 callkit
    vela
    vela
    Oct 17, 2019❤️4
    62
    早些年为了保护运营商利益,国行智能手机(上一个时代的)还阉割 Wi-Fi 呢……呵呵呵呵。
    我大阉割国什么不做。
    JoeoooLAI
    JoeoooLAI
    Oct 17, 2019
    63
    @efin 感觉应该与 ID 和手机是否行货无关,我用 WhatsApp 国内 ID +行货 Callkit 照样能用。 我是多希望 能像 skype 和 WhatsApp 一样 能在自带通信录就能用这些软件打电话出去。老实说现在运营商策略都侧重在流量啦,通话分钟数基本白送的,还这样护着是真的。。
    lcvs
    lcvs
    Oct 17, 2019
    64
    被工信部禁止了~
    artandlol
    artandlol
    Oct 17, 2019 via Android
    66
    @mschultz 旧更换电话绑定就不会了
    tangpizi
    tangpizi
    Oct 17, 2019
    67
    我和我老婆都换绑了香港号码,结果我的有 call kit 我老婆的没有。。。这事怎么回事??
    Lentin
    Lentin
    Oct 17, 2019
    68
    @tangpizi 以微信注册时的为准,用大陆手机号注册的就没有,其他地区就算绑回去也没关系的
    internelp
    internelp
    Nov 18, 2019
    69
    @ashong 您用的是什么版本,为啥我测试没有 callkit, 难道 ios13 不支持了?
    ashong
    ashong
    Nov 18, 2019
    70
    @internelp 13.2.2,只是国区的 app 被阉割了
    tracesnow001
    tracesnow001
    Dec 21, 2019
    71
    看了一圈,国行用外区手机号+外区 appstore 的软件就可以解锁 callkit 和 Facetime audio 了是这个意思吧。即使是港行的机器,如果用国区手机号国区 appstore 的软件,也没有 callkit 和 facetime audio
    fvckDaybyte2
    fvckDaybyte2
    OP
    Dec 22, 2019 via iPhone
    72
    @tracesnow001 不是,港行无论如何都有 FaceTime audio
    96HN29Sby9aZ0g81
    96HN29Sby9aZ0g81
    Jan 18, 2020
    73
    是不是现在 app 中不使用非官方提供的 CallKit,voip push 就用不了
    mxi1
    mxi1
    Mar 22, 2020 via iPhone
    74
    @tracesnow001 #71 国行机器用任何方式都无法解锁 FaceTime audio ;
    MicroGalaxy
    MicroGalaxy
    Mar 23, 2020 via iPhone
    75
    微信更新了,就是不用 callkit 也收到推送
    astkaasa
    astkaasa
    Mar 23, 2020 via iPhone
    76
    钉钉有 callkit 啊
    shenwu35
    shenwu35
    Mar 26, 2020
    77
    走普通文本推送
    Damon4V
    Damon4V
    Nov 24, 2020
    78
    ***********************************************
    Damon4V
    Damon4V
    Nov 24, 2020
    79
    口吐芬芳
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1198 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 121ms · UTC 16:11 · PVG 00:11 · LAX 08:11 · JFK 11:11
    ♥ Do have faith in what you're doing.