簡體   English   中英

Callkit 來電未在舊 iphone 的背景中顯示 (Pushkit/Callkit)

[英]Callkit incoming call not displayed in background on older iphones (Pushkit/Callkit)

我正在嘗試實現 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

當您使用不應該是阻塞同步操作的東西阻塞主線程時,通常會導致代碼0x8badf00d的異常。 這會延遲應用程序響應系統事件的時間過長。 因此,例如,在您對推送通知的響應中,您可能正在運行一些同步網絡操作或其他任何會阻塞主線程的操作。 在這種情況下,需要將阻塞同步操作移動到異步操作中。

你只在舊手機上看到這種行為對我來說是有意義的:就像典型的競爭條件一樣,任何延遲主應用程序中主線程的東西可能大部分時間在新手機上執行得足夠快,所以你不會注意到它與舊手機相比,它們完全或少得多。 也可能是舊手機的模式更多的是巧合,相反,連接速度/信號強度等其他因素會延遲阻塞操作足夠長的時間以導致 iOS 僅在某些情況下殺死您的應用程序,因為主線程是被封鎖太久。

請記住,阻塞主線程的原因有時可能非常復雜,超出了您自己的代碼(例如,它可能是某些庫中的錯誤)。 我發現了這個Firebase 錯誤描述,顯然 Firebase iOS ZF20E3C5E54C0AB3D37BAZ6 中的一個錯誤導致了 F966

請參閱Apple關於代碼0x8badf00d的技術說明。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM