iOS アプリに動的リンクを追加しています。アプリがインストールされている場合、動的リンクは iOS 8 以降で適切に機能します。アプリがインストールされていない場合、iOS 8 シミュレーターで、インストール後および最初の起動時に、
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
FIRDynamicLink *dynamicLink = [[FIRDynamicLinks dynamicLinks] dynamicLinkFromCustomSchemeURL:url];
if (dynamicLink) {
[self handleIncomingDynamicLink:dynamicLink];
return YES;
}
return NO;
}
このメソッドが呼び出され、既にインストールされている場合と同様にすべてが正常に機能します。
しかし、問題は iOS 9 および 10 のシミュレーターとデバイス、および iOS 8 デバイスにあります。iOS 9および10のガイドによると、
- (BOOL)application:(UIApplication *)app
openURL:(NSURL *)url
options:(NSDictionary<NSString *, id> *)options {
}
このメソッドは、アプリが初めてインストールされて開かれていない場合に呼び出す必要がありますが、インストール後には呼び出されません。また、iOS 8 シミュレーターで呼び出された openURL メソッドは、iOS 8 デバイスでは呼び出されません。
[FIRApp configure]
と呼ばれます。そして、CustomURLScheme
設定を変更してテストしました。iOS 8 では、設定しなくても動作しまし[FIROptions defaultOptions].deepLinkURLScheme
た。しかし、iOS 8のケースを使用して、構成しCustomURLScheme
、そのスキームでその設定を追加しました[FIROptions defaultOptions].deepLinkURLScheme
が、その行でもiOS 8シミュレーターのみが機能しました。
また、インストール後の最初の起動では機能しませんが、インストール後にリンクをクリックすると、うまく機能します。
[更新: iOS のバージョンをさらに変更し、シミュレーターかデバイスかをテストしました]
iOS8.3 デバイスがインストールされていない -> 動作しない
iOS8.4 シミュレーターがインストールされていない -> 動作する
iOS8.3 シミュレーターがインストールされていない -> 動作する
iOS9.1シミュレータ未インストール→動作
iOS9.2 シミュレーターがインストールされていない -> 動かない
インストール済み -> 動作しない
iOS9.3.2 デバイスがインストールされていない -> 動作しない
インストール -> 動作
iPhone 5s iOS 9.3 シミュレーターがインストールされていない -> 動作する
インストール済み -> 動作しない
iOS10.1シミュレータ未インストール→動作
インストール -> 動作