『入る学科間違えた高専生』の日記

プログラミングのコードを書いたりする予定です。あとは日記等。あといつまで高専生やねん

Universal Linksの実装を今更やってやった!

はじめに

iOS8か9ぐらいで実装された、 Universal Links
結構前(2年前ぐらい)に試してみたのですが知識及ばずで結局諦めてしまっていましたが、急にやってみたくなったのでやったのでそれのまとめ

環境

  • 開発環境
    • Xcode9.3
    • Swift4.1
    • iOS11.3
    • iPhoneX
  • サーバ

Xcode側の設定

Associated Domainsの有効化

Project -> Capabilities -> Associated Domainsをオンにして applinks:<apple-app-site-associationを配置するドメイン> を設定。

これでApple Developer Centerの方のAppIDの方も有効になる

AppDelegate.swift

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
    if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
        print(userActivity.webpageURL!)
    }
    return true
}

Universal Linksからの遷移をハンドリングするメソッドです。

サーバ側の設定

apple-app-site-association の記述

developer.apple.com

上記サイトのようにJSON形式のファイルを作る。
内容に関しては省略。

今回は https://example.com/.well-known/apple-app-site-association でアクセスできるように配置した。
Universal LinksのValidator等は、まず .well-known から探してくるらしい。

App Search API Validation Tool - Apple Developer

Nginxの設定

サンプルとしてあげておく。

server {
    listen 443;
    server_name example.com;
    root /path/to/html;

    location /.well-known/apple-app-site-association {
        default_type application/json;
    }

    location / {
        index index.html;
        ・・・
    }

    ・・・
}

重要な部分は、 apple-app-site-associationapplication/json として認識させてあげること。

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
$ sudo /etc/init.d/nginx restart

これで準備OK!!

テスト

まずはSafariに直打ちで確認する。

f:id:nanashinodonbee:20180521231432p:plain

表示される画面をちょっと上にスクロールするとSmartBannerのように表示がされる。ここの 開く ボタンを押すとアプリを開くこともできる。

メモ帳にURLを貼って遷移させてみる。

こんな感じの動作をしてくれる!やったね!

最後に

今回のブログ記事は超雑記ですが、既にいろんなところに情報は散らばっているので大丈夫でしょう。自分のメモ的な感じで書きました。

本来であれば、先週の分の記事になって日記記事のはずだったんですがいまいち気分が乗らなかったのでパスしました。書くかもしれませんが。