2014-10-08 3 views
2

Я видел несколько сообщений об этом вопросе, но все равно не понимаю.Как запустить приложение с пользовательским расширением клавиатуры?

Я установил URL-идентификатор для размещения приложения - KbrdApp. Если мое приложение запускает приложение, оно возвращает флаг «1», что означает «готов».

Это код от расширения пользовательской клавиатуры вызывается из viewDidLoad:

UIWebView * webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; 
NSString *customURL = @"KbrdApp://"; 
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:customURL]]; 
[webView loadRequest:request]; 

Я прочитал, что NSExtensionContext работает только с расширением Сегодня, поэтому я попытался UIWebView. Но это не сработает.

Что не так?

+0

если вы получили ответ, то пожалуйста, напишите код ... Я, имеющую такое же проблема ... Спасибо –

ответ

1

Подход, упомянутый в вопросе, остановился в iOS 8.0.

В настоящее время (iOS 9.2) вы можете использовать несколько способов доступа к общему экземпляру UIApplication и его скрытому методу openURL.

Лично я предпочитаю этот подход ведьму я разработал:

// Usage: 
// UIApplication.sharedApplication().openURL(NSURL(string: "your-app-scheme://")!) 

extension UIApplication { 

    public static func sharedApplication() -> UIApplication { 
     guard UIApplication.respondsToSelector("sharedApplication") else { 
      fatalError("UIApplication.sharedKeyboardApplication(): `UIApplication` does not respond to selector `sharedApplication`.") 
     } 

     guard let unmanagedSharedApplication = UIApplication.performSelector("sharedApplication") else { 
      fatalError("UIApplication.sharedKeyboardApplication(): `UIApplication.sharedApplication()` returned `nil`.") 
     } 

     guard let sharedApplication = unmanagedSharedApplication.takeUnretainedValue() as? UIApplication else { 
      fatalError("UIApplication.sharedKeyboardApplication(): `UIApplication.sharedApplication()` returned not `UIApplication` instance.") 
     } 

     return sharedApplication 
    } 

    public func openURL(url: NSURL) -> Bool { 
     return self.performSelector("openURL:", withObject: url) != nil 
    } 

} 
+0

символ имеет значение. Мой код вообще не вызывает 'sharedApplication'. Код только что ввел функцию 'UIApplication.sharedApplication(). OpenURL (url)', которая просто работает. –

+0

Работает! в совершенстве – Danny182

Смежные вопросы