大村貴俊(56)15この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。公衆無線LAN使ってますか?最近、といわず随分前からスマートフォンユーザーにお世話になっているのが、公衆無線LANスポット。携帯の電波の弱い地下や駅構内、ファーストフード店やはたまた路上で利用でき、近年流行りの3GByte/7GByteパケット通信制限の規制外で高速に通信できるなど、4G/3Gのバックアップ目的での使い方も流行っており、各キャリアがそれぞれHotspotを提供しています。ワイヤレスゲートやモバイルBBポイントといった公衆無線LANを提供している会社もあり、一定以上のシェアが有ります。iPhoneなどのiOSからこれらへ接続する際、まずはHotspotに接続して、そこでIDとパスワードを入力、その後認証が済んだら晴れてインターネットが接続可能になるといった動作をします。各携帯キャリアがそれぞれオプションで持っているWiFiであれば、その契約SIMが入ってる場合等認証を自動化して接続してくれるみたいです。このホットスポットには欠点があります。自動的に接続すると、ニュルニュルっと下からログイン用のフォームや画面が表示されます。WiMAXのスポットに接続した時に表示されるもの、右側がソフトバンクWi-Fiスポットに接続した時に表示されるものです。どちらもパスワード暗号化されたスポットではなく、接続した後に自動的に表示されるものです(ヨドバシアキバ前で接続してみました)。実際、このニュルっと出てくるのも便利です。WiMAX加入者であれば、ここにログインIDとパスワードを入力すればインターネットに接続することが出来ます。それ以上の細かいIPの設定などは要りません。ここで2つ困った問題が有ります。1.Wi-Fi接続済なのに何もコンテンツが取得できないステータスの取得は、よく、Reachabilityクラスを利用します。その際使うコードが下記になります。接続不可}この場合、FreeのWi-Fiスポットに接続された場合はReachableViaWiFiになります。この事自体は全然問題ありません(むしろ、無線LANで接続されているのですから正解です。)しかし、コンテンツを取得するところで問題が発生します。delegate:self];一般的に見るWebコンテンツを取得する方法です。この方法で取得した場合、本来であればログインID画面の情報が取得されます(ページのリダイレクト先が取得されます)。ここでコンテンツを取得しようとしても、取得先のコンテンツは空のものが返却されます。本来だったら接続されているわけですから、その接続されているコンテンツが知りたいわけです。大した問題では無いかもしれませんが、「何らかの情報が取得できるか」ってのは大きな違いです。ネットワークがWi−Fiに接続したら処理をするプログラムを作ってる際に、コンテンツが返ってこない理由が接続先サーバーのエラーなのか、それとも通信経路上でトラブルになっているのか、それともソフトウェア的な潜在的バグが存在しているのか、わかりません。権限の移譲を受ける「CaptiveNetwork」さてここで、このニュルっと出てくるダイアログを出させなくする方法があります。それがこの「CaptiveNetwork」というフレームワークです。出させなくするというわけではなく、「にゅるっと出てくる画面を出す代わりの動作を自分の中で持つよ!って宣言する」役割があります。);CNSetSupportedSSIDs関数にCFArrayRefでssidのArrayを与えてやれば良さそうですね。(そっくりそのまま定義を言い直してみました)つまり、自分の中で処理するよってSSIDをarrayで渡してあげればいいわけですね。上記の画像で言うWi2_clubや0001softbankなどになります。いったところで実装を簡単に書いてみます。今回使うのはSystemConfigurationのFramework内にありますので、まずはLinkします。その後、今回はアプリの頭で制御を奪ってやる必要があるので、AppDelegate.mの中に以下の記述をします。YES;}書いてあるとおり、にゅるっと出てくるのを抑制したいだけSSIDを登録します。これを使うと何ができるの?これを使うと、HotSpotの様々なログインを肩代わりするアプリとか作れます。Wi-Fi」、日本製だと「moopener」ような複数のサービスにまたがった接続ツールとか作れます。(もちろんこれは、肩代わりするところを宣言するだけなので、裏側でログインIDとパスワードを使ってログイン処理をする所を実装しなければならないですが。)ちなみに、この権限移譲ですが、アプリケーションを削除したら解除されます。再度にゅるっとしたログイン画面を表示したくなったらアプリケーションを削除してあげてください。SSIDのArrayを空のものを再度登録してあげて下さい。最後にあまり使うことのないCaptiveNetworkですが、いつもサービスとして使ってる公衆無線LANのアプリがどんな仕組みを使ってるかを知ると、また違った見方ができますね。566,774フロントエンドからバックエンドまで、iOSからAndroid、サーバサイドまで、フルスタックエンジニアな雑用をやっております。昔はデバドラごりごりの組み込み屋だったのですが、その辺をひた隠しにしつつ今はメモリを気にしない素敵なアプリ開発を堪能しています。リモート】クラスメソッドの会社説明会を開催しますクラスメソッドでは、AWS・AI・ビッグデータ・モバイルなどの技術職や営業のメンバーとして一緒にお仕事をする仲間を大募集しています。#cmdevio新型コロナウイルスの感染拡大を受け、本イベントを延期させていただくことになりました(開催時期未定)。お申し込みいただいた皆様には大変申し訳ございませんが、何卒ご理解いただけますようよろしくお願いいたします。AWSについてライトに色んな情報交換をしましょう。カフェ店長のオカノです。使いたいときの注意点を書きました。本が出ていたので読んでみたところよかったので紹介させていただきます。EC2)環境において、不要な踏み台サーバをなくすことができる便利なアップデートです。臼田佳祐295ワークフロー自動化OSSのn8nをAWS環境で建てて検証してみました。非常に期待できるサービスです。Fargateの勉強をしています。使ってみたい方は参考にしてください。洋介252SnowflakeがAWSの東京リージョン上で稼働するようになりました。データを日本に置けます。芳賀健232こんにちは!猫様の忠実なるしもべ、芳賀健です。Tokyoで開催されました。カフェ店長のオカノです。クラスメソッド株式会社が運営するAWS・iOS・HTML5に関する技術情報サイトです。