リリース中のアプリから広告を取っ払いました

いままでリリースしたアプリから広告バナーを全て削除することにしました。以下の対象アプリをApp Storeから最新版に更新して頂くと、広告バナーが表示されなくなります。

なぞる距離測定

・地図上で距離をおおまかに測定するアプリです。iPadで利用された場合のみ画面下部に広告バナーが表示されていました。iPhoneでは当初から何も表示されません。

ここから半径XXkm

・地図上でどこかからの半径をおおまかに測定するアプリです。こちらもiPadの場合のみ広告バナーが表示されていました。

POST:KML

・KMLファイルをGoogleマップへアップロードするアプリです。ファイルリスト画面下部に広告バナーが表示されていました。

Live ID Availability Checker

・どこかの大学では盛大に消えたらしいですが、なかなか削除されないWindows Live ID(Hotmailアカウント)の削除チェックツールです。画面下部に広告バナーが表示されていました。

 

Twitter検索クライアント #Discover 1.0をリリースしました

Twitter検索のクライアントアプリ「#Discover」をリリースしました。公式のTwitterアプリではちょっと物足りない検索機能を補完するアプリです。

#Discover

1日数件〜数十件程度しかTwitterではつぶやかれないけど、必ずチェックしておきたいキーワードなどがある方におすすめです。

iOSでサーバー証明書のフィンガープリントをチェックする

証明書まわりはフレームワークが自動でやってくれますが、手動でやるならこんな感じのコードではないかと。

とりあえずサンプルアプリを作成してみました。Twitterの検索APIに接続して結果を取得するアプリです。

Image

https://github.com/FLCLjp/VerifyFingerPrint

「Verify Finger Print」をONにして「Send Request」をタップすると、APIの呼び出し時にサーバー証明書のフィンガープリント(SHA-1)がハードコードされた値と一致するかどうかをチェックします。一致しない場合は通信をキャンセルします。

■関連リンク

NSURLConnectionDelegate Protocol Reference

Mac OSX Security Framework

iOS Security Framework

たぶんこれは無効化できないんじゃないかと思うUDID取得コードをつくってみた

以下の流れの続きです。

上記のコードはシミュレーターでは上手く動作しますが、実機では期待とおりに動作しません。そこで、実機でも動作するUDID取得コードを作成してみました。

ご覧の通り、超適当かつ無理矢理感が凄いコードですが、一応以下の環境で動作することを確認しました。 

  • Xcode 4.3
  • iPad2 / iOS5.1
  • iPhone4S / iOS5.01
  • iPhone4 / iOS5.0
  • iOS シミュレーター

環境によってはまったく動作しないことがあるかと思いますので、ぜひ各自で修正してGistにアップロードして教えてください。また、このコードを防御できるコードをご存知の方もぜひGistにアップロードして教えてください。

 

UDIDを使用不可にするコードを無効にするコードがあっても使用不可にできるコードをさらに無効にするコードがあっても使用不可にできるUDIDKillerをつくってみた

前回の記事について以下のコードを見かけたので、

残念だけどメソッドを呼び出したタイミングで置き換えるだけだと簡単に取得できちゃいます。ぶっちゃけ大量にUDIDの代わりにUUIDを返すカテゴリを追加したほうが楽かも 

いわば「UDIDKillerKillerKiller」的なコードですが、それでも無効にならないコードをつくってみました。

前回のコードを「UDIDKillerKillerKiller」同様にloadメソッドに移しただけです。このコードをAppDelegateクラス(またはプロジェクト内の他のクラス)に追加します。なお、「UDIDKillerKillerKiller」は外部SDK(Static Library)に含まれているものと仮定しています。

loadメソッドはクラスやカテゴリーがObjective-Cランタイムに追加された時点で呼び出されるメソッドです。

NSObjectClassリファレンス

実機で確認すると、プロジェクト内のクラス > 外部SDKのクラス > プロジェクト内のカテゴリ > 外部SDKのカテゴリーという順番でloadメソッドが呼ばれるようなのですが、ドキュメントでの記述が見当たらなかったので上手く動作しないかもしれません。

UDIDを使用不可にするコードを無効にするコードがあっても使用不可にできるUDIDKillerをつくってみた

以下の記事とコードを見かけたので、

外部SDKを入れる際にとりあえずUDIDを取れないように細工をする

やったーUDIDKillerKillerできたよー 

UDIDKillerKillerでも無効にならないコードをつくってみました。

 

PlugBugを購入しました

モバイルルーターやiPadの充電に使おうと思い、Macbookの電源アダプターにUSBポートを追加できる「PlugBug」というアクセサリーを購入しました。オンラインのAppStoreで注文して翌日には届いていました。

Twelve South PlugBug

Picture_1

外箱はこんな感じ。

Picture_2

開けるとこんな感じ。

全部英語なのだと勝手に勘違いしていたのですが、外箱もマニュアルもちゃんと日本語でした。

電源アダプターにつけなくても、単体で電源コンセント直のUSB充電器としても使えるようです。

CharlesでiPhoneアプリのSSL通信をキャプチャする

Charlesというソフトを利用すると比較的簡単にiPhoneアプリケーションの通信をキャプチャすることができました。自作アプリはもちろん、AppStoreで公開されているアプリケーションでも通信内容をキャプチャすることができます。また、SSL通信のキャプチャにも対応しているので、利用しているアプリが怪しい情報を送信していないか確認するのにも役立ちそうです。

Charles_web_debugging_proxy__http_monitor_http_proxy_https__ssl_proxy_reverse_proxy

Charles - Web Debugging Proxy Application

個人ライセンスが$50の有料ソフトですが、トライアルバージョンを無料で利用できます。

以下、iPhoneのSSL通信をキャプチャするまでの設定手順です。

iPhoneのプロキシにCharlesを設定する

まずはiPhoneのプロキシとしてCharlesを設定します。あらかじめ同一ネットワーク内でCharlesを起動させておきます。

  1. iPhoneで 設定 > Wi-FI を表示
  2. 現在接続しているWi-Fiネットワークのボタンをタップ
  3. 画面下段のHTTPプロキシを「手動」に変更
  4. プロキシの設定を追加

1-1

  • サーバー・・・Charlesを動作させているPCまたはMacのIPアドレス
  • ポート・・・CharlesのProxy Settingsで指定したポート番号(デフォルトは8888)
  • 認証・・・オフ

HTTP通信であればこれだけでキャプチャできます。今回はSSL通信もキャプチャしたいので以下の設定も行います。

iPhoneにプロファイルをインストールする

Charlesが配布しているiPhone用のプロファイルをインストールします。このプロファイルをインストールするとSSL通信用の証明書がインストールされるようです。

  1. iPhoneのSafariでhttp://charlesproxy.com/charles.crtを開く
  2. 設定画面に移り、確認ダイアログが表示されるのでインストール

CharlesでSSL通信のキャプチャを有効にする

CharlesではSSL通信のキャプチャが無効になっているので有効にします。

  1. Charlesで Proxy > Proxy Settingsを開く
  2. SSLタブを選択して、設定を変更

Proxy_settings

  • Enable SSL Proxying・・・チェックをつけます
  • Locations・・・Addから * を追加します。

Locationsはワイルドカードで指定できます。とりあえずSSL通信は全部キャプチャしたいので「*」を設定しました。

キャプチャを開始する

Charlesのツールバーからレコードボタンを押すとキャプチャが開始されます。iPhoneのSafariでサイトを表示したり、通信を行うアプリを起動して確認してみてください。

Charles_3

例えば、iPhoneでTwitterを起動した場合はこのようになります。Twitter APIへの接続はHTTPSで行われていますが、それらも全てキャプチャされているのが分かります。

 

これらのiPhoneの設定等についてはCharlesのサポートページに記載されています。iOSシミュレーターの設定方法などもありますので、そちらもご覧下さい。

http://www.charlesproxy.com/support/

 

iOS単体でKMLファイルをGoogleマップへアップロードするアプリ

GPSアプリなどで出力されるKML形式のファイルをGoogleマップへアップロードするアプリ「POST:KML」をリリースしました。AppStoreから無料でダウンロードできます。

POST:KMLをAppStoreで表示

以下、アプリの使い方の説明です。

まずはKML出力に対応したアプリを用意します。今回はSENSYUSYA Co.,Ltd.さんのKingGPSを利用させて頂きます。

1. KingGPSのログを開いて、右下のボタンから別の方法で開くをタップします。

1-1

2. KMLに対応したアプリが一覧表示されるので、POST:KMLをタップします。

2-1

3. POST:KMLに切り替わり、KingGPSから出力されたKMLがリストに追加されています。

3

4. アップロードしたいKMLをタップすると、Googleアカウントへのログイン画面が表示されます。GoogleアカウントのIDとPassを入力してログインをタップします。

4

5. ID・PASSが正しければKMLがGoogleマップへアップロードされます。

5

6. アップロードが正常に完了したら右上のアクションをタップします。

6

7. アップロードされたKMLのGoogleマップでのURLを取得できます。

7

  • URLをツイート ・・・ アップロードしたGoogleマップのURLをTwitterでつぶやくことができます。
  • URLをメールで送信・・・GoogleマップのURLをメールで送信します。
  • URLをコピー・・・GoogleマップのURLをクリップボードにコピーします。
  • 埋め込みコードをコピー・・・Webサイトやブログに埋め込むためのコードをクリップボードにコピーします。

読み込めなかったり、正常にアップロードできないKMLファイルがありましたら調べてみますのでご連絡ください。

UIAlertViewにalertViewStyleを設定すると日本語キーボードがきわどい

iOS5.0からUIAlertViewalertViewStyleが追加され、単独のテキストフィールドやログイン・パスワードフィルードを持ったUIAlertViewを簡単に作成できるようになりました。

Uialertviewstyleplaintextinput

↑UIAlertViewStylePlainTextInput

Uialertviewstyleloginandpasswordinput

↑UIAlertViewStyleLoginAndPasswordInput

 

もうボタンにキーボードが被りそうでドキドキです。