web-dev-qa-db-ja.com

iOS9でSafariからURLスキームを開く方法は?

この方法でサファリからアプリを開くことができました:

window.location = 'myapp://do/xx';

またはFacebookアプリを開きます:

window.location = 'fb://';

しかし、これはiOS9で機能しなくなりました。

サファリでURLスキームを使用してアプリを開くにはどうすればよいですか?

19
kevin

IOS 9 URL Shchemesアップデート:iOS 9では、LSApplicationQueriesSchemesが導入され、他のアプリがインストールされているかどうかをアプリが照会できるようになりました。

1- URLスキームが宣言され、canOpenURL(scheme)を呼び出す場合

インストールされているアプリがそのURLスキームをサポートしている場合はYES

そのURLをサポートするアプリがない場合はNO

syslogにcanOpenURLが表示されます:URLの失敗: "urlScheme://"-エラー:null

2- URLスキームが宣言されておらず、canOpenURL(scheme)を呼び出している場合

常にNOを返します

syslogにcanOpenURLが表示されます:URLの失敗: "urlScheme://"-エラー:null

IOS 9では、開発者はこれらのinfo.plist LSApplicationQueriesSchemesを追加する必要があります

<array>
    <string>urlscheme</string>
    <string>urlscheme2</string>
    <string>urlscheme3</string>
    <string>urlscheme4</string>
</array>

最大50 unqiue URLスキームを宣言できます!

3
Malek Belkahla

Ios9の一般リリースでは、window.locationをカスタムURLに設定すると、ユーザーがポップアップで開いてヒットした後にのみ、アプリが起動します。私はこれについてバグをAppleで提出し、それはサファリからアプリを起動するための意図的な動作であると答えた。キャンセルをクリックすると失敗する問題を調査すると述べた。将来の試み。

2
Helen Woodward

IOS9では、AppleはURLスキームに関するいくつかの点を変更しています。 ここ はそれらの変更に関する記事です。

基本的には、アプリでサポートされているすべてのURLスキームを.plistファイルに登録するhaveになりました。

2
Eric Schanet

window.locationオブジェクト全体を置き換えるのではなく、hrefプロパティに目的のアドレスを割り当てるだけです。

window.location.href = 'myapp://do/xx';

IOS 9.0.2では動作しますが、safariは確認ダイアログを表示して、ユーザーがアプリでリンクを本当に開きたいことを確認します。

0
Pavel Sadchenko