MacアプリがWebクローリング出来ない
前回の続きで、Webページからデータをクローリングする
Macアプリを開発中なのですが
URLを入力してボタンを押しても
「A server with the specified hostname could not be found.」
となりクローリングが出来ません
今回はその解決手順のメモです
結論から言うと2つの手順が必要でした
①App Transport Security (ATS) の設定
②ネットワーク権限の追加
①のApp Transport Security(ATS)が何かと言うと
Appleがセキュリティ強化のために導入した仕組みです。
iOS 9、macOS 10.11から標準で有効になっています。
ATSの目的は、「アプリから安全でないネットワーク通信を防ぐ」 ことです。
要はこいつに一時的に「すべてのネットワーク通信を許可する」 設定を行います。
①の手順は、
-
Info.plistファイルを見つける
Xcodeでプロジェクトを開く
左側のプロジェクトナビゲーター(ファイル一覧)で Info.plist
(Infoとだけ書いてあるファイル) を探す
通常は プロジェクト名のフォルダ内にあります -
Info.plistを開く
Info.plist をクリックして開きます。 -
設定を追加
Xcodeの表形式で追加
Info.plistが開いたら、右クリック → "Add Row" をクリック
新しい行が追加されるので、キー名に App Transport Security Settings と入力
型が自動的に Dictionary になります
その行の左側の三角をクリックして展開
展開された中で右クリック → "Add Row"
キー名に Allow Arbitrary Loads と入力
型を Boolean に変更
値を YES に設定
成功すると図のようになります。
②の手順は以下の通りです
-
プロジェクト設定を開く
Xcodeでプロジェクトを開いている状態で
左側のプロジェクトナビゲーター(ファイル一覧)の一番上にあるプロジェクト名
(青いアイコン)をクリック
メイン画面の中央にプロジェクト設定が表示されます -
ターゲットを選択
プロジェクト設定が開いたら、左側のアプリ名(通常はプロジェクト名と同じ)を
クリックして選択
選択されると青くハイライトされます -
Signing & Capabilitiesタブを開く
上部のタブで 「Signing & Capabilities」 をクリック
画面には現在の設定が表示されます -
Capabilityを追加
「App Sandbox」の中にある2つの設定、
「Outgoing Connections (Client)」 ← これを選択
「Incoming Connections (Server)」 ← これも選択
この2つにチェックを入れて完了です
下の画像をご参照下さい。
これでMacアプリがクローリングできるようになりました😊

