2015-01-14 4 views
2

가능한 중복 Crash when open containing app from today extension입니다.오늘 확장 프로그램에서 열면 iOS 앱이 다운 됨

사용자 정의 URL 스키마를 사용하여 오늘 확장 위젯에서 포함하는 앱을 열려고합니다. 내가 확장 내부에서 사용하고있는 코드는 다음과 같습니다 그러나

let urlStr = String(format: "myapp://?device_id=%@", deviceId!) 
let url = NSURL(string: urlStr) 
self.extensionContext!.openURL(url!, completionHandler: nil) 

, 포함하는 응용 프로그램이 충돌 열 때 :

Thread : Crashed: com.apple.main-thread 
0 CoreFoundation     0x0000000103e572dc CFStringCreateCopy + 28 
1 libswiftFoundation.dylib  0x0000000105f02a44 _TF10Foundation24_convertNSStringToStringFCSo8NSStringSS + 148 
2 MyApp       0x00000001017a9055 @objc MyApp.CLAppDelegate.application (MyApp.CLAppDelegate)(ObjectiveC.UIApplication, openURL : ObjectiveC.NSURL, sourceApplication : Swift.String, annotation : Swift.Optional<Swift.AnyObject>) -> Swift.Bool (CLAppDelegate.swift) 
3 UIKit       0x0000000104898685 -[UIApplication _applicationOpenURL:payload:] + 185 
4 UIKit       0x00000001048a0816 -[UIApplication _handleNonLaunchSpecificActions:forScene:withTransitionContext:] + 2380 
5 UIKit       0x00000001048a42e8 __88-[UIApplication _handleApplicationLifecycleEventWithScene:transitionContext:completion:]_block_invoke + 196 
6 UIKit       0x00000001048a4215 -[UIApplication _handleApplicationLifecycleEventWithScene:transitionContext:completion:] + 349 
7 UIKit       0x000000010488f31a -[UIApplication scene:didUpdateWithDiff:transitionContext:completion:] + 486 
8 FrontBoardServices    0x000000010903a2a3 __31-[FBSSerialQueue performAsync:]_block_invoke + 16 
9 CoreFoundation     0x0000000103eb553c __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 12 
10 CoreFoundation     0x0000000103eab285 __CFRunLoopDoBlocks + 341 
11 CoreFoundation     0x0000000103eaaa43 __CFRunLoopRun + 851 
12 CoreFoundation     0x0000000103eaa486 CFRunLoopRunSpecific + 470 
13 GraphicsServices    0x0000000106e6e9f0 GSEventRunModal + 161 
14 UIKit       0x0000000104891420 UIApplicationMain + 1282 
15 MyApp      0x00000001017ac57e top_level_code (CLAppDelegate.swift:16) 
16 MyApp      0x00000001017ac5ba main (CLAppDelegate.swift) 
17 libdyld.dylib     0x0000000106155145 start + 1 

같은 사용자 정의 URL 체계입니다 다른 곳에서 열 때 작동합니다.

Xcode 6.1.1, 배포 목표 8.1을 사용하십시오.

답변

4

스스로 해결할 수 있었고 해결책을 게시 할 것입니다.

func application(application: UIApplication, 
       openURL url: NSURL, 
       sourceApplication: String!, // Wrong 
       annotation: AnyObject?) -> Bool 

정말해야한다 :

자동 완성 엑스 코드의 이전 버전 중 하나가 올바르지 같이 UIApplicationDelegate 선언을 밝혀

func application(application: UIApplication, 
       openURL url: NSURL, 
       sourceApplication: String?, // OK 
       annotation: AnyObject?) -> Bool 

(sourceApplication 필요로 String? 및 NOT String!)

희망이 있으면 도움이됩니다.

관련 문제