(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

iOS9でcanOpenURLを使う【iOS】


このエントリーをはてなブックマークに追加

この記事でのバージョン
iOS9.1
Xcode 7.1

はじめに

特定のアプリがインストールしているかを調べる時などに使うcanOpenURLですが、

iOS9から以下のようなエラーが出るようになりました。


-canOpenURL: failed for URL: "hoge://" - error: "This app is not allowed to query for scheme hoge"


これはATSの話と同様、仕様変更に原因があるようで、

ThirdPartyアプリがcanOpenURLを使用して、ユーザーがインストールしているアプリを調べることへの対策をしているようです。


との事らしいです。


canOpenURLの許可

残念ながら全てのcanOpenURLを許可する事は出来ないみたいです。


しかし、info.plistにLSApplicationQueriesSchemesを登録する事で、

特定のスキームだけを有効にする事は出来ます。


f:id:kan_kikuchi:20151111135621p:plain


上記の画像のようにLSApplicationQueriesSchemesというkeyでArrayを作成し、

許可したいスキームをArrayの中に登録する事でそのスキームでcanOpenURLが出来るようになります。


XcodeProjectUpdater

Unityで開発したアプリの話になりますが、

以前作成した、Xcodeプロジェクトの自動設定を行うXcodeProjectUpdater

ApplicationQueriesSchemesの自動設定を追加しました。



おわりに

指定したスキームならcanOpenURLを有効に出来ますが、

大量にスキームがある場合はどうしようもありません。


既にインストールされている端末には広告を表示しない、みたいなやつはどうするんでしょうかね。