2016-07-30 3 views
1

私はバックエンドでTurbolinks 5、iOSアプリケーションではturbolinks-iosを使用しています。Turbolinks-ios:Webからのメタデータ - >ネイティブ

VisitableViewControllerにページが読み込まれると、ネイティブコードを使用して追加のUIアフォーダンスを提供するために、ネイティブアプリにウェブページからのメタデータを受け取る(または取得する)必要があります。

サーバー側に<meta>タグを設定してからWKWebViewでJSを実行し、メタタグをそのようにすることで、これをラウンドアバウトで行うことができますが、ハックのようです。

もう1つのオプションは、turbolinksコールバックメッセージを実行し、addScriptMessageHandlerで受信していますが、これもハッキングのようです。

助けていただけたら幸いです!おそらくこれを行うより良い、認可された方法がありますか?それは一般的な必要があるようです。

+0

解決しましたか? – Obromios

+0

@Obromiosちょうど答えを加えました - それをチェックしてください – elsurudo

答えて

0

私は、メタタグを使ってオリジナルのアイデアを作り上げました。その後、私がやっていることは、ハンドラにそれらの(フィルタリング)メタタグの内容を渡し、そのようなメッセージハンドラを呼び出し、ページのロードにある:

$(function() { 
    if (typeof webkit != 'undefined') { 
    var metadata = {}; 
    $('meta[data-scanner-app="true"]').each(function() { 
     metadata[$(this).attr('property')] = $(this).attr('content'); 
    }); 
    webkit.messageHandlers.ScannerApp.postMessage(metadata); 
    } 
}); 

それから私は、単にturbolinksでそのハンドラを傍受し、私が持っていますデータ。

注:data-scanner-appは、含めるメタタグに追加するデータ属性です。

関連する問題