티스토리 뷰

최근에 기존에 있던 앱에 기능을 추가해주고 싶어서 

위젯 쪽을 해보는데 시뮬레이터에는 돌아가는데 실제 기기에서는 안돌아가는 아름다운(?) 버그가 나서 

저와 같은 고통(?)을 겪으시는 분들을 위해 올려봅니다.

일단 제가 본 버그는 아래처럼 생겼습니다. 

 

버그 내용

더보기

SendProcessControlEvent:toPid: encountered an error: Error Domain=com.apple.dt.deviceprocesscontrolservice Code=8 "Failed to show Widget 'com.testproject.TestWidget.TTestWiddget' error: Error Domain=FBSOpenApplicationServiceErrorDomain Code=1 "The request to open "com.apple.springboard" failed." UserInfo={NSLocalizedFailureReason=The request was denied by service delegate (SBMainWorkspace)., BSErrorCodeDescription=RequestDenied, NSUnderlyingError=0x870a3aac0 {Error Domain=SBAvocadoDebuggingControllerErrorDomain Code=1 "Failed to get descriptors for extensionBundleID (com.testproject.TestWidget.TTestWiddget)" UserInfo={NSLocalizedDescription=Failed to get descriptors for extensionBundleID (com.testproject.TestWidget.TTestWiddget)}}, FBSOpenApplicationRequestID=0x7cb6, NSLocalizedDescription=The request to open "com.apple.springboard" failed.}." UserInfo={NSLocalizedDescription=Failed to show Widget 'com.testproject.TestWidget.TTestWiddget' error: Error Domain=FBSOpenApplicationServiceErrorDomain Code=1 "The request to open "com.apple.springboard" failed." UserInfo={NSLocalizedFailureReason=The request was denied by service delegate (SBMainWorkspace)., BSErrorCodeDescription=RequestDenied, NSUnderlyingError=0x870a3aac0 {Error Domain=SBAvocadoDebuggingControllerErrorDomain Code=1 "Failed to get descriptors for extensionBundleID (com.testproject.TestWidget.TTestWiddget)" UserInfo={NSLocalizedDescription=Failed to get descriptors for extensionBundleID (com.testproject.TestWidget.TTestWiddget)}}, FBSOpenApplicationRequestID=0x7cb6, NSLocalizedDescription=The request to open "com.apple.springboard" failed.}., NSUnderlyingError=0x870aad9a0 {Error Domain=FBSOpenApplicationServiceErrorDomain Code=1 "The request to open "com.apple.springboard" failed." UserInfo={NSLocalizedFailureReason=The request was denied by service delegate (SBMainWorkspace)., BSErrorCodeDescription=RequestDenied, NSUnderlyingError=0x870a3aac0 {Error Domain=SBAvocadoDebuggingControllerErrorDomain Code=1 "Failed to get descriptors for extensionBundleID (com.testproject.TestWidget.TTestWiddget)" UserInfo={NSLocalizedDescription=Failed to get descriptors for extensionBundleID (com.testproject.TestWidget.TTestWiddget)}}, FBSOpenApplicationRequestID=0x7cb6, NSLocalizedDescription=The request to open "com.apple.springboard" failed.}}}

Domain: DTXMessage

Code: 1

User Info: {

    DVTErrorCreationDateKey = "2023-04-18 08:18:27 +0000";

}

--

 

 

해결 방법

1. 프로젝트 > Targets 에 있는 Widget 클릭 > Build Settings > Deployment > iOS Deployment Target 을 변경해주세요.

-> 저는 테스트 기기 버전을 고려해 16.0 으로 변경했습니다. 

각자 테스트 기기의 버전을 고려해서 변경해주세요.

2. 빌드 버전에 따라 작동하지 않는 부분이 생길수있습니다. 해당 부분은 주석처리 혹은 버전 처리를 해주세요. 

-> 저는 자동으로 생성된 LiveActivity와 관련된 부분을 모두 주석으로 처리했습니다.

 

3. Edit Scheme.. 를 열어주세요. 

여기있습니다.

4. Run > Arguments > Environment Variables > _XCWidgetKind 칸에 위젯 이름을 적어주세요. 

저칸에 어떤걸 실행할지 적어주는거라고 생각하시면 됩니다.

-> 위젯이름은 코드에서 아래처럼 적혀있는 class 의 이름을 적어주시면 됩니다. 

struct TTestWiddget: Widget {
    let kind: String = "TTestWiddget"

    var body: some WidgetConfiguration {
        ....
        ....
    }
   
}

 

3일간의 사투(?) 끝에 저는 이렇게 했더니 해결이 되었습니다. 

저와 같은 버그를 겪으시는 분들에게 도움이되길 바라며 올려봅니다. 

 

오늘도 파이팅입니다ㅠ

댓글