ユニバーサルリンクを利用する
Appleのユニバーサルリンク機能を使ってアプリのセキュリティを高めることができます。ユニバーサルリンクを設定すると、LINEにより、まずユニバーサルリンクを使ってアプリの起動が試行されます。ユニバーサルリンクが無効な場合は、iOSバンドルIDに基づいたURLがフォールバックとして使用されます(詳しくは、「アプリをチャネルにリンクする」を参照してください)。
ユニバーサルリンク機能の有効化は必須ではありませんが、アプリケーションの安全性を高めるため使用することを推奨します。
ユーザーにユニバーサルリンクを使ってアプリを起動させるには、以下の手順に従います。
- アプリとサーバーを関連づける。
- LINE Developersコンソールでユニバーサルリンクを設定する。
- ユニバーサルリンクを指定して
LoginManager.setupメソッドを呼び出す。 - ユニバーサルリンクでアプリが起動した後でログイン結果を制御する。
1. アプリとサーバーを関連づける
この手順については、Appleの「Allowing Apps and Websites to Link to Your Content」を参照してください。
以下の作業を完了します。
- アプリで制御する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ファイルは以下のようになります。
ユニバーサルリンクは実際のiOSデバイスでのみテストできることに注意してください。アプリのIDとプロファイルを正しく設定する必要があります。ユニバーサルリンクが動作しない場合は、Appleの「Troubleshooting Universal Links」を参照してください。次の手順に進む前に、ユニバーサルリンクが動作することを確認してください。
2. LINE Developersコンソールでユニバーサルリンクを設定する
手順については、「アプリをチャネルにリンクする」を参照してください。この例では、https://yourdomain.com/line-auth/に設定します。
3. ユニバーサルリンクを指定してLoginManager.setupメソッドを呼び出す
LoginManager.setupメソッドを呼び出すときに、ユニバーサルリンクをLINE SDK for iOS Swiftに渡します。これにより、ユニバーサルリンクの不正使用を防ぐため、リンクがLINE Developersコンソールとアプリの両方で正しく設定されていることがLINEログインによって検証されます。以下の例では、ユニバーサルリンクはhttps://yourdomain.com/line-auth/です。
LoginManager.setupメソッドについて詳しくは、「iOSアプリにLINEログインを組み込む」を参照してください。
4. ユニバーサルリンクでアプリが起動した後でログイン結果を制御する
LINEプラットフォームから返されたログイン結果を制御するには、取得したURLをLoginManagerのapplication(_:open:options:)メソッドに渡します。プロジェクトがマルチウィンドウ(iOS13で導入された機能)をサポートするかどうかで、アプリデリゲートクラスまたはシーンデリゲートクラスを変更する必要があります。
アプリデリゲートを変更する
iOS 12以前では、UIApplicationDelegateオブジェクトを呼び出して、URLを開きます。したがって、アプリデリゲートクラスにapplication(_:continue:restorationHandler:)デリゲートメソッドが存在していれば、以下の行を追加します。デリゲートメソッドが存在しない場合は、以下のとおりにデリゲートメソッドを作成してください。
シーンデリゲートを変更する
iOS 13以降では、UISceneDelegateオブジェクトを呼び出して、URLを開きます。
Xcode 11以降でプロジェクトを作成した場合は、デフォルトでは、プロジェクトにはSceneDelegate.swiftファイルが含まれ、Info.plistファイルにはUIApplicationSceneManifestエントリーが含まれます。
アプリがマルチウィンドウをサポートする場合は、使用するシーンデリゲートクラスに、次の行を追加します。
ただし、アプリがマルチウィンドウをサポートしていない場合は、UIApplicationDelegateオブジェクトを呼び出して、URLを開きます。アプリデリゲートクラスを変更してください。
これで、ユニバーサルリンクを使ってLINEからアプリを起動し、アプリでログイン結果を制御できるようになりました。