2017-09-22 13 views
0

私のアプリにiMessage extensionというターゲットを追加しています。拡張機能は、url属性を持つメッセージを送信することになっています。ユーザーがメッセージに触れたときに期待している動作は、メッセージのurl属性を使用してブラウザを開くことです。ios 11 imessage extension message.urlがサファリを開けません

私はこのコードを実行し、私のmessageViewでのボタンがあります。

override func didSelect(_ message: MSMessage, conversation: MSConversation) { 

     if let message = conversation.selectedMessage { 
      // message selected 

      // Eg. open your app: 
      self.extensionContext?.open(message.url!, completionHandler: nil) 
     } 
} 

:私はメッセージをタッチすると、それは私がこれを、その後を追加したMessageViewController

を展開し

@IBAction func labelButton(_ sender: Any) { 
     let layout = MSMessageTemplateLayout() 
     layout.imageTitle = "iMessage Extension" 
     layout.caption = "Hello world!" 
     layout.subcaption = "Test sub" 
     guard let url: URL = URL(string: "https://google.com") else { return } 

     let message = MSMessage() 
     message.layout = layout 
     message.summaryText = "Sent Hello World message" 
     message.url = url 

     activeConversation?.insert(message, completionHandler: nil) 
    } 

をそして今、私がメッセージに触れると、それは私の主なアプリを開きますが、まだ私のブラウザは開きません。

私は Safariで開くことが不可能であること(したがって、私はこのポストを開け、私はコメントすることはできません、)私は記事へのリンクを挿入し、開くためのメッセージでクリックで可能に news appを持って another postに見ている

記事がブラウザウィンドウに表示され、アプリがインストールされます。

誰かがブラウザウィンドウで強制的にリンクを開く方法を教えてください。

ありがとうございました。

+0

'SFSafariViewController'を使うことができます。もう1つの記事では、メッセージ拡張機能からユーザーをSafariに呼び出せないことを指摘しています。 – beyowulf

+0

あなたの答えをありがとう。私はブラウザにウィンドウを開くこのニュースアプリを持っていなかったなら、私は他の記事の答えを考えていただろう。 – radar

答えて

0

メッセージにリンクを挿入するためのトリックです。 url属性を持つオブジェクトを作成することはできませんが、直接リンクを挿入するにはSafariで開きます。

activeConversation?.insertText("https://google.com", completionHandler: nil) 
関連する問題