ミッションたぶんPossible

どこにでもいるシステムエンジニアのなんでもない日記です。たぶん。

PhoneGapで外部URLを開く。

 PhoneGapでiPadアプリ作成中にちょっと詰まったのでメモ。アプリ内で<a href="http://...">xxxxx</a> などとアプリ内ではなく通常のWebにリンクしようとすると以下の様なエラーが出ることがあります。

ERROR whitelist rejection: url='http://...


 PhoneGapに予め登録されてないサイトはアクセス出来ない様になってるんですね。これを解決するには「プロジェクトフォルダ/プロジェクト名フォルダ/PhoneGap.plist」を修正する必要があります。


PhoneGap.plist(変更前)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    ・
    ・
    ・
    ・
	<key>ExternalHosts</key>
	<array/>
    ・
    ・
    ・
    ・
</dict>
</plist>

→ PhoneGap.plist(変更後)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    ・
    ・
    ・
    ・
	<key>ExternalHosts</key>
	<array>
        	<string>*</string>
    	</array>
    ・
    ・
    ・
    ・
</dict>
</plist>


 上記の様に、ExternalHosts指定の直下にある<array>タグ内に、<string>タグでワイルドカードを表す「*」を指定してやれば、全てのサイトを見られる様になります。オレは試してないけど、<string>タグを並べてURLをそれぞれ指定してあげれば、個別にWebサイト表示を許可してあげることも出来ると思います。


 なお、<a>タグに「target="_blank"」を指定してあげると、PhoneGapアプリ内ではなく、Mobile Safariから対象URLを開きます。アプリ内で表示させたくない時には、この指定を忘れない様にして下さい。