iOS 8.3 以前では以下の URL が開きますが、iOS 9 では動作しません。
let instagramURL = NSURL(string: "instagram://app")
URLが開かないのはなぜですか?
iOS 8.3 以前では以下の URL が開きますが、iOS 9 では動作しません。
let instagramURL = NSURL(string: "instagram://app")
URLが開かないのはなぜですか?
TestA と TestB の 2 つのアプリを想定しています。TestB は、TestA がインストールされているかどうかを照会したいと考えています。「TestA」は、その info.plist ファイルで次の URL スキームを定義します。
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>testA</string>
</array>
</dict>
</array>
2 番目のアプリ「TestB」は、次の呼び出しによって「TestA」がインストールされているかどうかを確認しようとします。
[[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"TestA://"]];
しかし、これは iOS9 では通常 NO を返します。これは、"TestA" を TestB の info.plist ファイルの LSApplicationQueriesSchemes エントリに追加する必要があるためです。これは、次のコードを TestB の info.plist ファイルに追加することによって行われます。
<key>LSApplicationQueriesSchemes</key>
<array>
<string>TestA</string>
</array>
実際の実装はこちらにあります: https://github.com/gatzsche/LSApplicationQueriesSchemes-Working-Example
共有ダイアログからの Facebook 共有は、@Matthieu の回答があっても失敗します (残りのソーシャル URL では 100% 正しい)。Facebook SDK から反転した一連の URL を追加する必要がありました。
<array>
<string>fbapi</string>
<string>fbauth2</string>
<string>fbshareextension</string>
<string>fb-messenger-api</string>
<string>twitter</string>
<string>whatsapp</string>
<string>wechat</string>
<string>line</string>
<string>instagram</string>
<string>kakaotalk</string>
<string>mqq</string>
<string>vk</string>
<string>comgooglemaps</string>
<string>fbapi20130214</string>
<string>fbapi20130410</string>
<string>fbapi20130702</string>
<string>fbapi20131010</string>
<string>fbapi20131219</string>
<string>fbapi20140410</string>
<string>fbapi20140116</string>
<string>fbapi20150313</string>
<string>fbapi20150629</string>
</array>
9.0.x のジェイルブレイクされた電話には、URL スキームを破るバグがあったことに注意することが重要です。ジェイルブレイクされたデバイスを実行している場合は、Cydia で Patcyh を更新してください。