Xcode7で、iOS9端末をターゲットにビルドでエラー
failed for URL: “xxx”
iOS9のiPhone6でアプリの動作確認をしようとビルドしたところ、こんなエラーが
2015-09-24 15:31:04.123 xxx[213:7758] -canOpenURL: failed for URL: “nakamapapp-xxx://” – error: “This app is not allowed to query for scheme nakamapapp-xxx”
2015-09-24 15:31:04.124 xxx[213:7758] Please add URL scheme(nakamapapp-xxx) to info.plist
2015-09-24 15:31:04.124 xxx[213:7758] *** Terminating app due to uncaught exception ‘LobiSetupException’, reason: ‘Can’t handle URL.’
*** First throw call stack:
(0x182a00f5c 0x1975f3f80 0x100338ce0 0x100338200 0x1002cefb0 0x1000a5a2c 0x1000b7df4 0x1000b8b24 0x1000b7904 0x10006e744 0x1000e856c 0x10006203c 0x187fcb1a0 0x1881f3e7c 0x1881f81c0 0x1881f5300 0x18c7477ec 0x18c747b6c 0x1829b85a4 0x1829b8038 0x1829b5d38 0x1828e4dc0 0x187fc40c8 0x187fbef60 0x1000c70e4 0x197e1e8b8)
libc++abi.dylib: terminating with uncaught exception of type NSException
私はランキングSDKとしてLobiを組み込んでおり、URLスキームの設定が必要なのですが、
そのURLスキームが開けないというエラーです。
(nakamapapp-xxx://の部分がLobi SDK実装の際に必要になるURLスキーム)
エラーの解決方法
Xcodeのプロジェクトから、
『info.plist』を開き、『Add Row』で、『LSApplicationQueriesSchemes』を追加。
Typeは『Array』として、子要素(『+』で追加、Typeは『String』)のValueに、
URL を設定すればOKです!
複数のURLがある場合は、子要素を更に追加してください。
どういうエラーか
iOS9から、ただURLスキームを指定して開こうとしても開くことができなくなりました。
これは、ユーザがインストールしているアプリの情報を
他のアプリが簡単に調べられないようにしたものです。
このため、canOpenURLを実行するとエラーとなります。
(カスタムURLでアプリを起動する場合、なぜか openURL のみコールすれば
普通に開けてしまうらしい。とはいえinfo.plistにURLスキームを追加しておくべき)
注意
混同しないよう注意
・Xcode7未満(Xcode6以前)でビルドしたアプリはエラーにならない
安心してください。エラーになりませんよ。
iOS9端末でもXcode6でビルドしたアプリはエラーにならないので大丈夫。
ビルドし直さないと!と焦る必要はありません。
あくまでも、URLスキームが必要なアプリをXcode7でビルドする場合の注意。
まあ、これがエラーになったら更新ラッシュでえらい事になりますからね。