2015-12-13 30 views
9

カスタムURLスキームのプラグイン(https://github.com/EddyVerbruggen/Custom-URL-scheme)を除いて、アプリを開発しているところがほとんどあります。私は正常にプラグインをインストールし、signsrestaurantandbarのカスタムURLスキームを設定しました。したがって、signsrestaurantandbar://を使用すると、アプリケーションが開きます。私が直面している問題は、URLを処理することです。 readmeでは、このために関数handleOpenURL(url)を使用できますが、アプリ内の特定のページを読み込む際に問題が発生していると言います。CordovaでカスタムURLスキームでhandleOpenURLを使用する

ここに私が試したものです:

function handleOpenURL(url) { 
     var strValue = url; 
     strValue = strValue.replace('signsrestaurantandbar://',''); 
     window.location.href = strValue + ".html"; 
    } 

私は...私のindex.htmlページでこれを入れて、それがロードsignsrestaurantandbarにpage.htmlを開く必要が考えた://ページが、それはそれをしません正しく。私のクロムコンソールには、ページがロードされたと言われていますが、何もエラーもなく空白に見えますが、これは一度しか起こりません。私がsignsrestaurantandbar://ページを読み込もうとすると、2回目にページを読み込むだけでアプリケーションが読み込まれます。

カスタムURLスキームを使用して特定のページを読み込む方法についてのヒントはありがたいです。

答えて

9

CSPに「カスタム」URLを記載する必要があります。

追加されました。2016-02-11:注:あなたのアプリは今は不安です。あなたはAPPを安全に保つことができます。

それはこのようになります:

<meta http-equiv="Content-Security-Policy" 
     content="default-src * signsrestaurantandbar:; 
        style-src * 'self' 'unsafe-inline' 'unsafe-eval'; 
        script-src * 'self' 'unsafe-inline' 'unsafe-eval';"> 

通常、ワイルドカード(*)を設定するほとんどのアプリケーションを扱うことができるではなく、あなたの「カスタム」プロトコル。
注:ワイルドカード設定は、アプリストアを「アプリストア」から外してしまう可能性があります。

またワークシートを助けるべきであるあなたの​​3210

<allow-intent href="signsrestaurantandbar:" /> 

このホワイトリストに追加する必要があります。 HOW TO apply the Cordova/Phonegap the whitelist system

またwhitelist matrix、特にsectionon <allow-intent (...) />をお読みください - 幸運

+0

さあ、行方不明だった。私はCSPをもう少し良く理解していると思います。再度、感謝します! – user3839044

+1

handleORL()が呼び出されない理由は他にありますか?私は ''とCSPを一緒に使って上記のアプローチを試しましたが、依然として呼び出される関数を得ることはできません。 – johnborges

+1

問題が修正されました。なんらかの理由で、handleOpenURL()関数はHTML本体の '

5

のベストは、このコードを使用してグローバルhandleOpenURL機能を追加します。

window.handleOpenURL = function(url) { 
    console.log(">>>>>>>>>>>>>>>>>>>"); 
    // do stuff, for example 
    // document.getElementById("url").value = url; 
    console.log(url); 
}; 

Cordova Custom URL Scheme Handlingを参照してください。あなたはこの機能でalertを使用する場合、アプリケーションがハングアップすること

注:

あなたは、あなたがしなければ、あなたのアプリケーションがハングする、handleOpenURLコードでアラートなどの任意のインタラクティブ機能を起動することはできません。同様に、setTimeoutコールで最初にラップしない限り、ゼロのタイムアウト値でCordova APIを呼び出さないでください。

この方法の利点は、Content-Security-Policyメタタグを使用してコンテンツセキュリティポリシーを変更する必要がないことです。

+0

どこにコードを追加すればいいですか?私は 'document.addEventListener( 'deviceready'、function(){...')を試しましたが、うまくいきませんでした。 – sooon

+0

@sooon、それは 'deviceready'イベントハンドラに置いてあります。 'が呼び出されましたか?私はChrome開発ツールが確実に私のためにログに記録されないことに気付いた。 –

+0

私は' index.html'に '

urlscheme
'を入れ、 'urlscheme'というテキストをURLに置き換えるのに' jQuery' – sooon

関連する問題