2016-05-23 23 views
0

アプリをインストールしていないと私のiPhoneに私のウェブページを開きたいとします。はい、AppleのUniversal Linksについて知っていますが、これはiOSデバイスでのみ動作し、iOS 9を実行する必要があります。アプリがインストールされていない場合はウェブを開く

これを実行することができます。私はEbayでそれを見た。あなたは、リンクを持っている場合には、インストールした場合、アプリで開くか、でしょうかかわらず、デバイスおよびバージョンのブラウザで:あなたは携帯かどうかを検出するいくつかのコードを追加したくなるでしょう開いているWebページに

http://rover.ebay.com/rover/0/e11011.m43.l1123/7?euid=b4a2e0009e73485c9f8b740ae229dba1&bu=43989098353&loc=http%3A%2F%2Fwww.ebay.com%2Fulk%2Fitm%2F162076993293&sojTags=bu=bu 
+1

これはiOS固有の質問ですか?そうであれば、なぜAndroidとしてタグ付けされていますか? – t0mm13b

答えて

0

アプリケーションがウェブページを開いている場合、そのコードはあなたのアプリのURLスキームへの呼び出しを引き起こすはずです。

あなたのアプリでURLスキームを設定する方法について知っておくべきことがいくつかあります。

注:ウェブサイトのコードベースにアクセスする必要があります。

UPDATE

Here(ジャバスクリプト経由で)Webページ自体にデバイスタイプを検出するのお手伝いをすることができますstackoverflowの質問です。

上記のコードは、iOSデバイスを検出した場合は、その後のようなJavaScriptの呼び出しを行うことができます。

window.open("your-app-scheme://myFunction","_self") 

アプリで正しくセットアップあなたのURL-スキームを持っている場合、あなたはアプリがインストールされていデバイス、それはアプリを開きます。もしそうでなければ、それはSafariのWebページ上にとどまります。

This is some good documentation iOSプロジェクトでのURLスキームの設定について

+0

これはまさに私が欲しいものですが、コードは質問です:-)私はすでに、アプリがインストールされていない場合はアプリストアに送ることができるものを見つけましたが、ウェブページにはありません。 – Nam

+0

私はいくつかのコード/ドキュメントにあなたに役立つかもしれないいくつかのリンクを追加しました。 – Hodson

+0

@AlexBauerのような説明が必要でしたが、とにかく感謝しています。 – Nam

1

正直言って、これはあなた自身で実装するのに苦労します。 iOS 9まで、妥当な基本的な実装ではJavaScriptを実装していましたが、これは、アプリケーションがインストールされていないと、ユーザーには表示されないというエラーメッセージが表示されます。

setTimeout(function() { 
    window.location = "https://yourdomain.com"; 
}, 25); 

// If "yourapp://" is registered, the user will see a dialog 
// asking if they want to open your app. If they agree, your 
// app will launch immediately and the timer won't fire. 
// If not installed, you'll get an ugly "Cannot Open Page" 
// dialogue and your fallback page will open when the timer expires. 

window.location = "yourapp://"; 

は、残念ながら、これはまだ「を開くことができませんページ」というエラーが表示されるでしょうが、最近まで、合理的にユーザーフレンドリーな方法によってでこの問題を回避することが可能であった:あなたのサイトに専用のリダイレクトページに次のようにリダイレクト悲しいことに、Apple intentionally broke that with the iOS 9.2 updateのように、カスタムURLスキームは実際には深いリンクにはあまり役に立たないのですが、の特定のが既にそのデバイスにインストールされている場合を除き、Appleは明らかにUniv ersal可能な限り採用を結びつけます。

最適な解決策は、カスタムURLスキームリンク(インテリジェントなJavaScriptリダイレクトを使用)とAppleの新しいUniversal Linksの組み合わせです。ユニバーサルリンクを使用すると、Webサイトのページに通常のhttp:// URLを使用できます(このページは、「ページを開くことができません」というエラーを引き起こすカスタムURLトリガーを使用せずに目的のフォールバックWebページに簡単にリダイレクトすることができます)あなたの携帯電話で、あなたのアプリに直接送信されます。残念ながら(あなたが指摘したように)ユニバーサルリンクはiOS 9以降でのみ動作し、多くのアプリ内で開かれたときにはまだ動作しませんので、あらゆるユーザーに堅実な体験を提供するために多くのエッジケース処理が必要です。

これは非常に扱いが多いので、最良の選択肢はBranch.io(全開示:私はチームと協力してください)のような無料のサービスかもしれません。ブランチサービス(eBayのいくつかを含む)hereを使って、アプリの例を見つけることができます。

+0

ありがとう@AlexBauer。 Branch.ioはクールなソリューションのようですが、iOS 9を扱うのは難しいですか?アプリがインストールされていてもアプリストアを開く必要があるかどうかを尋ねます。 iOS 9検出機能を統合してユニバーサルリンクを使用することができれば、Branch.ioははるかに簡単な解決策になります – Nam

+0

@Nam:素晴らしい点!実際には、すべてが設定されたら、これを正確に行います。支店はiOS 9と完全に互換性があります。アップルは警告なしで大きな変更を行うことが多く、iOS 9.2ではURLスキームの深いリンクが崩壊しました(詳細はこちら(https://blog.branch.io/ios-9.2-redirection-update-uri-scheme-and-universal-リンク))。それらは基本的に役に立たないので、あなたが経験していることは既知の問題であり、理想的ではありません。ユニバーサルリンクが有効になると、すぐにすべての機能が正常に動作します。 –

関連する問題