我正在尝试实现Pushkit/CallKit,但在旧版iPhone上遇到了一些问题。它适用于iPhone X和iPhone XR(13.3)。我特别测试过的两款手机是iPhone SE(13.3.1)和iPhone 7(11.2.5)。
当应用位于前台时,它们可以工作,但是当它们在后台时,即使收到 VOIP 通知并且呼叫已注册到 callkit,也永远不会显示传入呼叫 UI。有什么想法吗?以下是日志。您可以看到正在收到通知,并且呼叫正在尝试注册
Date/Time: 2020-05-08 21:03:08.3666 -0400
Launch Time: 2020-05-08 21:02:47.8260 -0400
OS Version: iPhone OS 11.2.5 (15D60)
Baseband Version: 6.30.04
Report Version: 104
Exception Type: EXC_CRASH (SIGKILL)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Termination Reason: Namespace SPRINGBOARD, Code 0x8badf00d
Termination Description: SPRINGBOARD, scene-create watchdog transgression: com.coachcare.coachcareionic exhausted real (wall clock) time allowance of 19.25 seconds | | ProcessVisibility: Foreground | ProcessState: Running | WatchdogEvent: scene-create | WatchdogVisibility: Foreground | WatchdogCPUStatistics: ( | "Elapsed total CPU time (seconds): 9.680 (user 9.680, system 0.000), 70% CPU", | "Elapsed application CPU time (seconds): 5.934, 43% CPU" | )
Triggered by Thread: 0
Filtered syslog:
None found
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x0000000184cff568 mach_msg_trap + 8
1 libsystem_kernel.dylib 0x0000000184cff3e0 mach_msg + 72
2 CoreFoundation 0x00000001851b3108 __CFRunLoopServiceMachPort + 196
3 CoreFoundation 0x00000001851b0cd4 __CFRunLoopRun + 1424
4 CoreFoundation 0x00000001850d0c58 CFRunLoopRunSpecific + 436
5 Foundation 0x0000000185b05594 -[NSRunLoop+ 50580 (NSRunLoop) runMode:beforeDate:] + 304
6 Foundation 0x0000000185b249ac -[NSRunLoop+ 178604 (NSRunLoop) runUntilDate:] + 96
7 CoachCare 0x00000001009a163c 0x100278000 + 7509564
8 CoachCare 0x000000010027d4b4 0x100278000 + 21684
9 UIKit 0x000000018e8342c4 -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 384
10 UIKit 0x000000018ea25bc4 -[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 3436
11 UIKit 0x000000018ea2aa14 -[UIApplication _runWithMainScene:transitionContext:completion:] + 1712
12 UIKit 0x000000018ecc62a8 __111-[__UICanvasLifecycleMonitor_Compatability _scheduleFirstCommitForScene:transition:firstActivation:completion:]_block_invoke + 800
13 UIKit 0x000000018ef9e100 +[_UICanvas _enqueuePostSettingUpdateTransactionBlock:] + 160
14 UIKit 0x000000018ecc5f0c -[__UICanvasLifecycleMonitor_Compatability _scheduleFirstCommitForScene:transition:firstActivation:completion:] + 252
15 UIKit 0x000000018ecc676c -[__UICanvasLifecycleMonitor_Compatability activateEventsOnly:withContext:completion:] + 732
16 UIKit 0x000000018f44b7c0 __82-[_UIApplicationCanvas _transitionLifecycleStateWithTransitionContext:completion:]_block_invoke + 260
17 UIKit 0x000000018f44b664 -[_UIApplicationCanvas _transitionLifecycleStateWithTransitionContext:completion:] + 448
18 UIKit 0x000000018f1b92cc __125-[_UICanvasLifecycleSettingsDiffAction performActionsForCanvas:withUpdatedScene:settingsDiff:fromSettings:transitionContext:]_block_invoke + 220
19 UIKit 0x000000018f3523cc _performActionsWithDelayForTransitionContext + 112
20 UIKit 0x000000018f1b917c -[_UICanvasLifecycleSettingsDiffAction performActionsForCanvas:withUpdatedScene:settingsDiff:fromSettings:transitionContext:] + 252
21 UIKit 0x000000018ef9d760 -[_UICanvas scene:didUpdateWithDiff:transitionContext:completion:] + 364
22 UIKit 0x000000018ea29158 -[UIApplication workspace:didCreateScene:withTransitionContext:completion:] + 540
23 UIKit 0x000000018ee3edbc -[UIApplicationSceneClientAgent scene:didInitializeWithEvent:completion:] + 364
24 FrontBoardServices 0x00000001878ce1f0 -[FBSSceneImpl _didCreateWithTransitionContext:completion:] + 364
25 FrontBoardServices 0x00000001878d6af8 __56-[FBSWorkspace client:handleCreateScene:withCompletion:]_block_invoke_2 + 224
26 libdispatch.dylib 0x0000000184b8aa14 _dispatch_client_callout + 16
27 libdispatch.dylib 0x0000000184b92200 _dispatch_block_invoke_direct$VARIANT$mp + 288
28 FrontBoardServices 0x00000001879027f8 __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 36
29 FrontBoardServices 0x000000018790249c -[FBSSerialQueue _performNext] + 404
30 FrontBoardServices 0x0000000187902a38 -[FBSSerialQueue _performNextFromRunLoopSource] + 56
31 CoreFoundation 0x00000001851b377c __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 24
32 CoreFoundation 0x00000001851b36fc __CFRunLoopDoSource0 + 88
33 CoreFoundation 0x00000001851b2f84 __CFRunLoopDoSources0 + 204
34 CoreFoundation 0x00000001851b0b5c __CFRunLoopRun + 1048
35 CoreFoundation 0x00000001850d0c58 CFRunLoopRunSpecific + 436
36 GraphicsServices 0x0000000186f7cf84 GSEventRunModal + 100
37 UIKit 0x000000018e8295c4 UIApplicationMain + 236
38 CoachCare 0x000000010027e3dc 0x100278000 + 25564
39 libdyld.dylib 0x0000000184bf056c start + 4
代码<code>0x8badf00d</code>的异常通常是在您使用不应该是阻塞同步操作的东西阻塞主线程时引起的。这将使应用程序在响应系统事件时延迟太长时间。因此,例如,在您对推送通知的响应中,您可能正在运行一些同步网络操作或任何其他会阻塞主线程的操作。在这种情况下,需要将阻塞同步操作移动到异步操作。
你只在老式手机上看到这种行为对我来说很有意义:就像典型的比赛条件一样,在你的主应用程序中延迟主线程的任何东西,在大多数情况下都可能在新手机上执行得足够快,所以你根本不会注意到,或者比老式手机更罕见。这也可能是旧手机的模式更像是巧合,而其他因素,比如连接速度/信号强度,会延迟阻止操作的时间,只会在某些情况下导致iOS杀死你的应用程序,因为主线程被阻止的时间太长。
请记住,主线程阻塞的原因有时可能非常复杂,超出了您自己的代码范围(例如,它可能是某个库中的一个bug)。我发现了这个Firebase bug描述,显然是Firebase iOS SDK中的一个bug导致了主线程阻塞。
请参阅Apple关于代码0x8badf00d
的技术说明。
套件 套件可以手动下载安装,但有套件命令的帮助下,它可以更快的运作。 它透过定义在 fuel/core/config/package.php 的来源列表, 及任何其他可以编辑或複製到 fuel/app/config 文件夹的配置档案寻找套件。 Oil 很聪明,所以它在做任何套件命令之前,会检查是否你已经在你的电脑上安装 Git。 如果你已经安装 Git,Oil 会安装一个套件做为 Git 储存库,
OpenGPG 套件 OpenPGP 是一个加密和签名的标准。尽管 最近 有一些 关于 它的 争议,但他和 Yubikey 结合使用并没有什么问题。
本文向大家介绍React中嵌套组件与被嵌套组件的通信过程,包括了React中嵌套组件与被嵌套组件的通信过程的使用技巧和注意事项,需要的朋友参考一下 前言 在React项目的开发中经常会遇到这样一个场景:嵌套组件与被嵌套组件的通信。 比如Tab组件啊,或者下拉框组件。 场景 这里应用一个最简单的Tab组件来呈现这个场景。 这里有Tab,TabItem和Area三个组件,其中Tab为嵌套组件,TabI
问题内容: 我最近一直在将SSL套接字用于消息传递系统。 我终于开始使用CA颁发的证书。我将其导入到密钥库中,设置了密钥库属性,并启动了客户端,但是当我尝试发送数据时,我一直收到握手异常。 我启用了调试模式,发现这是由于造成的。有什么想法吗? 如果有帮助,它还说它忽略了TLSV1和TLSV1.1中的大约10个密码套件。 我还安装了无限强度加密策略。 客户代码 服务器代码 编辑: 我刚刚添加了密码,
1、接口声明 在调用接口时必须在https请求的header中携带"token"参数。 token是智齿客服接口开放平台全局唯一的接口调用凭据。 开发者在调用各业务接口时都需使用token,开发者需要进行妥善保存。token的存储至少要保留32个字符空间。token的有效期目前为24个小时,需定时刷新,或根据接口返回的token失效提示,进行重新获取。请求token接口,无论token是否存在,都
Orm 是 物件关联对映(Object Relational Mapper) 的简写,它做两件事: 对应你资料库里的资料列到物件, 并能让你在这些物件之间建立关係。 它紧随 活动记录模式( Active Record Pattern),但也受到其他系统的影响。 CRUD:建立、读取、更新和删除 一旦你配置好你的模型,是时候开始在你的资料库中建立、读取、 更新和删除条目。 建立(Create) //