2014-12-19 18 views
1

我創建了今天的擴展程序並添加了一個按鈕以打開包含應用程序。內部擴展視圖控制器:從今天的擴展程序打開包含應用程序時發生崩潰

@IBAction func pressed() { 
    extensionContext?.openURL(NSURL(string:"myApp://")!, completionHandler: nil) 
} 

所以,我還添加URL方案包含應用程序的plist:

<key>CFBundleURLTypes</key> 
<array> 
    <dict> 
     <key>CFBundleURLSchemes</key> 
     <array> 
      <string>myApp</string> 
     </array> 
    </dict> 
</array> 

小部件工作正常,但是當我嘗試按小部件裏面包含應用程序的AppDelegate我的應用程序崩潰。迅速。無法到達application(application: UIApplication, openURL url: NSURL, sourceApplication: String, annotation: AnyObject?)內的斷點。 回溯:

* thread #1: tid = 0x27fb0, 0x00000001861bd698 CoreFoundation`CFStringCreateCopy + 36, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0) 
    frame #0: 0x00000001861bd698 CoreFoundation`CFStringCreateCopy + 36 
    frame #1: 0x00000001019f7954 libswiftFoundation.dylib`Foundation._convertNSStringToString (ObjectiveC.NSString) -> Swift.String + 152 
    frame #2: 0x000000010030172c myApp`@objc myApp.AppDelegate.application (myApp.AppDelegate)(ObjectiveC.UIApplication, openURL : ObjectiveC.NSURL, sourceApplication : Swift.String, annotation : Swift.Optional<Swift.AnyObject>) -> Swift.Bool + 104 at AppDelegate.swift:0 
    frame #3: 0x000000018ad172f0 UIKit`-[UIApplication _applicationOpenURL:payload:] + 216 
    frame #4: 0x000000018ad1b4c8 UIKit`-[UIApplication _handleNonLaunchSpecificActions:forScene:withTransitionContext:] + 2420 
    frame #5: 0x000000018ad1f810 UIKit`-[UIApplication _handleApplicationActivationWithScene:transitionContext:completion:] + 2220 
    frame #6: 0x000000018ad1ecec UIKit`__88-[UIApplication _handleApplicationLifecycleEventWithScene:transitionContext:completion:]_block_invoke + 140 
    frame #7: 0x000000018ad1ec44 UIKit`-[UIApplication _handleApplicationLifecycleEventWithScene:transitionContext:completion:] + 380 
    frame #8: 0x000000018ad12578 UIKit`-[UIApplication scene:didUpdateWithDiff:transitionContext:completion:] + 512 
    frame #9: 0x000000018e54562c FrontBoardServices`__31-[FBSSerialQueue performAsync:]_block_invoke + 28 
    frame #10: 0x000000018628ea28 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 20 
    frame #11: 0x000000018628db30 CoreFoundation`__CFRunLoopDoBlocks + 312 
    frame #12: 0x000000018628c154 CoreFoundation`__CFRunLoopRun + 1756 
    frame #13: 0x00000001861b90a4 CoreFoundation`CFRunLoopRunSpecific + 396 
    frame #14: 0x000000018f35b5a4 GraphicsServices`GSEventRunModal + 168 
    frame #15: 0x000000018aaee3c0 UIKit`UIApplicationMain + 1488 
    * frame #16: 0x0000000100307df4 myApp`top_level_code + 76 at AppDelegate.swift:15 
    frame #17: 0x0000000100307f0c myApp`main + 48 at AppDelegate.swift:0 
    frame #18: 0x000000019709aa08 libdyld.dylib`start + 4 

如果我在Safari中打開myApp://,應用正確打開W/O崩潰。

+0

你有沒有解決這個問題?我遇到了一個非常類似的問題。 – 2015-03-02 17:27:14

+0

我甚至爲蘋果打開雷達 – 2015-03-03 11:08:15

回答

1

我遇到了一個非常類似的問題。我已經實現application:openURL:sourceApplication:annotation:這個斯威夫特代碼:

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

但事實證明,sourceApplication實際上應該是選擇性的:

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

不知道我是如何得到的是錯誤的(我假設的Xcode自動完成,但它現在似乎在做正確的事情),但是改變它爲我解決了這個問題。

相關問題