このソリューションを使用します https://Gist.github.com/davidwkeith/2662899 アプリがインストールされている場合、ウェブからアプリにリダイレクトします。しかし、それはiOS 9で壊れていました。Googleクロームでは動作しますが、カスタムURLスキームを使用したiframeは、safariでアプリを起動しません。
私が交換した場合
document.getElementById('loader').src = 'custom-protocol://my-app'
(ローダーがiframeである場合)
window.location = 'custom-protocol://my-app'
仕事になります。
os:iOS 9 beta4およびbeta5
誰もがこの問題を知っていますか? iOS 9ベータ版のバグですか?それとも修正されませんか?
前の回答は、重要な詳細が欠落しており、App Storeへのフォールバックが含まれていないユニバーサルリンクの部分的な実装です。
まず、URIスキームをトリガーするためにiframe srcを設定できなくなりました。その問題を正しく特定しました。ただし、既に述べたように、window.location = 'custom-protocol://my-app';
を設定することはできます。ブラウザからアプリを開いたことがあり、バックエンドでルックアップできるCookieが保存されているため、ユーザーがアプリを持っていることがわかっている場合でも、custom-protocol://
を安全に起動できます。
次に、navigator.userAgentを使用してユーザーエージェント文字列を検出できます。 iOS 9より前では、iframeを使用してURIスキームを起動し、タイムアウト後にフォールバックできます。 iOS 9では、Cookieに基づいてURIスキームを起動するかどうかを選択してから、ユーザーをApp Storeに移動できます。 Branch でこれに取り組んでおり、ユーザーがアプリを持っている可能性が高いかどうかをCookieを使用して実装することを実装しています。それについてさらに質問がある場合はお気軽にご連絡ください。または、当社のソリューションを直接ご利用ください。
ユニバーサルリンクの実装は、他の答えが説明するほど簡単ではありません。実際には、かなり複雑です。手順の完全なリストを次に示します(ここ数週間、これらの手順を使用していくつかのアプリの統合を支援しました)。
1。承認済みドメインを登録するようにアプリを構成します
私。 developer.Apple.comでアプリを登録していない場合
ii。 developer.Apple.comのアプリ識別子で「関連付けられたドメイン」を有効にします
iii。 Xcodeプロジェクトで「関連付けられたドメイン」を有効にします
iv。アプリに適切なドメインエンタイトルメントapplinks:yourdomain.com
を追加します
2。 「Apple-app-site-association」ファイルをホストするようにWebサイトを構成します
私。ドメイン名を購入するか、既存のものから選ぶ
ii。ドメイン名のSSL証明書を取得します(これにはCloudFlareを使用できます!)
iii。構造化された「Apple-app-site-association」JSONファイルを作成します
{
"applinks": {
"apps": [ ],
"details": {
"TEAM-IDENTIFIER.YOUR.BUNDLE.IDENTIFIER": {
"paths": [
"*"
]
}
}
}
}
iv。 SSL証明書でJSONファイルに署名する
cat Apple-app-site-association-unsigned | openssl smime -sign -inkey yourdomain.com.key -signer yourdomain.com.cert -certfile digicertintermediate.cert -noattr -nodetach -outform DER > Apple-app-site-association
v。ファイルサーバーを構成する
Apple-app-site-associationファイル:-ヘッダー「application/pkcs7-mime」とともに送信する必要があります-エンドポイントyoudomain.com/Apple-app-site-associationから送信する必要があります-200 HTTPコードを返す必要があります.
Express + Nodeの例:
var aasa = fs.readFileSync(__dirname + '/static/Apple-app-site-association');
app.get('/Apple-app-site-association', function(req, res, next) {
res.set('Content-Type', 'application/pkcs7-mime');
res.status(200).send(aasa);
});
クレジット: このブログ投稿から自由に借りました
はい、iOS9ではディープリンクが可能になりました。詳細な説明についてはリンクを確認してください。ただし、基本を説明しました。
http://blog.hokolinks.com/how-to-implement-Apple-universal-links-on-ios-9/
まず、ターゲットに移動して機能をクリックする必要があります。関連付けられたドメインを追加します。
次に、Apple-app-site-associationファイルをアップロードする必要があります。
基本的にJSONエディターを開き、次のようなものを作成します
{
"applinks": {
"apps": [],
"details": {
"TBEJCS6FFP.com.domain.App": {
"paths":[ "*" ]
}
}
}
}
次に、アプリでユニバーラルリンクをサポートする必要があります。実装する必要があります
extension AppDelegate {
func application(application: UIApplication, continueUserActivity userActivity: NSUserActivity, restorationHandler: ([AnyObject]?) -> Void) -> Bool {
if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
let webpageURL = userActivity.webpageURL! // Always exists
if !handleUniversalLink(URL: webpageURL) {
UIApplication.sharedApplication().openURL(webpageURL)
}
}
return true
}
private func handleUniversalLink(URL url: NSURL) -> Bool {
if let components = NSURLComponents(URL: url, resolvingAgainstBaseURL: true), let Host = components.Host, let pathComponents = components.path?.pathComponents {
switch Host {
case "domain.com":
if pathComponents.count >= 4 {
switch (pathComponents[0], pathComponents[1], pathComponents[2], pathComponents[3]) {
case ("/", "path", "to", let something):
if validateSomething(something) {
presentSomethingViewController(something)
return true
}
default:
return false
}