# ユニバーサルリンクを利用する

Appleのユニバーサルリンク (opens new window)機能を使ってアプリのセキュリティを高めることができます。ユニバーサルリンクを設定すると、LINEにより、まずユニバーサルリンクを使ってアプリの起動が試行されます。ユニバーサルリンクが無効な場合は、iOSバンドルIDに基づいたURLがフォールバックとして使用されます(詳しくは、「アプリをチャネルにリンクする」を参照してください)。

ユニバーサルリンク機能の有効化を推奨します

ユニバーサルリンク機能の有効化は必須ではありませんが、アプリケーションの安全性を高めるため使用することを推奨します。

ユニバーサルリンクを使ったアプリの起動は、iOS版のLINE 8.16以降でサポートされます。ユーザーにユニバーサルリンクを使ってアプリを起動させるには、以下の手順に従います。

  1. アプリとサーバーを関連づける。
  2. LINE Developersコンソールでユニバーサルリンクを設定する。
  3. Info.plistファイルにユニバーサルリンクを設定する。
  4. ユニバーサルリンクでアプリが起動した後でログイン結果を制御する。

# 1. アプリとサーバーを関連づける

この手順については、Appleの「Allowing Apps and Websites to Link to Your Content (opens new window)」を参照してください。

以下の作業を完了します。

  • アプリで制御するURLのJSONデータを含むapple-app-site-associationファイルを作成して、HTTPSサーバーに配置する。
  • Associated Domainsのエンタイトルメントをアプリに追加する。

このセクションは、LINEの認可レスポンスを制御するためのユニバーサルリンクがhttps://yourdomain.com/line-auth/であることを前提とします。

apple-app-site-associationファイルのpathsフィールドに/line-auth/*を含めます。有効なapple-app-site-associationファイルは以下のようになります。

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "YOUR_TEAM_ID.com.yourcompany.yourapp",
                "paths": [ "/line-auth/*" ]
            }
        ]
    }
}

ユニバーサルリンクは実際のiOSデバイスでのみテストできることに注意してください。アプリのIDとプロファイルを正しく設定する必要があります。ユニバーサルリンクが動作しない場合は、Appleの「Troubleshooting Universal Links (opens new window)」を参照してください。次の手順に進む前に、ユニバーサルリンクが動作することを確認してください。

# 2. LINE Developersコンソールでユニバーサルリンクを設定する

手順については、「アプリをチャネルにリンクする」を参照してください。この例では、https://yourdomain.com/line-auth/に設定します。

# 3. Info.plistファイルにユニバーサルリンクを設定する

アプリのInfo.plistファイルのLineSDKConfigディクショナリにUniversalLinkキーを追加し、値を設定します。ChannelIDキーと同じレベルに配置します。

<key>LineSDKConfig</key>
<dict>
    <key>ChannelID</key>
    <string>1234567890</string>
    <key>UniversalLink</key>
    <string>https://yourdomain.com/line-auth/</string>
</dict>

# 4. ユニバーサルリンクでアプリが起動した後でログイン結果を制御する

以下のコードをAppDelegateファイルに追加します。

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler
{
    if ([[LineSDKLogin sharedInstance] handleOpenURL:userActivity.webpageURL]) {
        return YES;
    }
    // Your other code to handle universal links and/or user activities.
}

これで、ユニバーサルリンクを使ってLINEからアプリを起動し、アプリでログイン結果を制御できるようになりました。