0

アプリでユニバーサル リンクを取得する際に問題が発生しています。これが私がすでに行ったことです。

-- 私のapple-app-site-associationファイルを作成しました。ここに私のファイルがあります

{

    "applinks": {
                "apps": [],
                "details": [{
                    "appID": "XXXXXXXXXX.com.companyName.app",
                    "paths": ["/view/*", "/class/*"]
                }]
            }
}

ファイルに署名していないので、プロジェクトの展開ターゲットを iOS 9.2 に設定しました (このファイルに署名する必要がないように)。

-- 関連するドメインをプロジェクト機能に追加しました

applinks:companyName.com
applinks:www.companyName.com

-- 関連付けられたドメインも開発者ポータルで有効になっています

-- プロビジョニング プロファイルを更新し、新しいプロファイルを使用しました

-- ビルドに資格を追加しました。

-- このデリゲート メソッドをオーバーライドしました

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *))restorationHandler

このファイルは HTTPS サーバーから入手でき、このアップル バリデーターからユニバーサル リンクのステータスを確認しました。https://search.developer.apple.com/appsearch-validation-tool/バリデーターがこれを検証しています。しかし、iMessageにあるリンクをクリックすると、そのリンクはcompanyName.com/view/7375のようになり、サファリで開き、アプリはコールバックを受け取りません。

私が見逃しているものは何か

4

3 に答える 3

1

OS が URL を「オーバーライド」モードで処理することを検討している可能性があります。これが Safari に移行する理由です。

アプリがユニバーサル リンクを解決すると、画面の右上隅に「companyName.com -->」のようなものが表示されます。それをタップすると、それがOSのユニバーサルリンクの処理方法を「オーバーライド」する方法であり、その時点でSafariで開かれ、永遠に開かれます。

メッセージ アプリに戻り、リンクを長押ししてみてください。1 ~ 2 秒後に、[Safari で開く] や ['あなたのアプリ名' で開く] などのオプションを提供するアクション シートが表示されます。「あなたの名前で開く」オプションを選択します。次に、OS がユニバーサル リンクを処理する方法を「リセット」し、それらをアプリに戻します。

于 2016-03-23T12:21:51.003 に答える
1

ユニバーサル リンクをサポートすると、iOS 9 ユーザーは Web サイトへのリンクをタップして、Safari を介さずにインストール済みのアプリにシームレスにリダイレクトできます。アプリがインストールされていない場合、Web サイトへのリンクをタップすると、Web サイトが Safari で開きます。

ここでは、独自のサーバーをセットアップし、アプリで対応するリンクを処理する方法について説明します。

Apple 開発者ページに移動

developer.apple.com でアプリを登録します。アプリ識別子で「関連付けられたドメイン」を有効にします。

Xcode プロジェクトで ここに画像の説明を入力 「関連付けられたドメイン」を有効にする 前の手順のように、developer.apple.com の APP ID で関連付けられたドメインを有効にすると、「関連付けられたドメイン機能をアプリ ID に追加します」というエラーは表示されなくなります。問題が解決しない場合は、xcode を数回終了して再起動すると、問題なく動作します。

適切なドメイン資格を追加し、ビルド時に資格ファイルが含まれていることを確認します。Xcode はそれを自動的に行います。

ここに画像の説明を入力

次に、ターミナルを使用してapple-app-site-associationファイルを作成します

このコマンドを使用して、AASA (apple-app-site-association) ファイルを作成します。

  1. CDデスクトップ

  2. touch apple-app-site-association

次に、AASP FILE を開き、この json 形式のデータを書き込みます

{
"applinks": {
    "apps": [ ],
    "details": [

        {
            "appID": "TeamID.BundleID2",
            "paths": [ "*" ]
        }
    ]
}
}

AASA ファイルの準備ができたら、https://<>/.well-known/apple-app-site-association
をホストできます。apple -app-site-association ファイルを HTTPS Web サーバーにアップロードします。このファイルは、サーバーのルートまたは .well-known サブディレクトリに配置できます。

APPLE APP SITE ASSOCIATION (AASA) VALIDATOR 次のリンクに移動し、ドメイン名を入力します。AASA ファイルが有効でアクセス可能かどうかを確認します。リンク: https://branch.io/resources/aasa-validator/#resultsbox

完了したら、Appdelgate に以下のコードを追加します

Swift4

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
    print("Continue User Activity called: ")
    if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
        let url = userActivity.webpageURL!
        print(url.absoluteString)
        //handle url and open whatever page you want to open.
    }
    return true
}

Objective-c

-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler{
    if ([userActivity.activityType isEqualToString: NSUserActivityTypeBrowsingWeb]) {
        NSURL *url = userActivity.webpageURL;

        }

    return YES;
}

次に、権限をアプリ ターゲットに追加して実行すると、アプリにリダイレクトされます。AASA ファイルが下の画面のように検証され、アプリケーションにリダイレクトされることを確認してください。

サーバー内でコンテンツ タイプの検証エラーが発生した場合は、1 つの .htaccess ファイルを作成し、その中にこのコードを記述できます。

<Files "apple-app-site-association">
ForceType 'application/json'
</Files>

この手順は私の側では機能しました。あなたの側も適切に機能することを願っています。この投稿を楽しんで読んだ場合。

于 2019-12-12T12:56:03.073 に答える