2012-01-03 3 views
2

iPhoneやAndroidにはモバイルアプリケーションがあります(間もなくリリース予定)。アプリの機能は同じです。複数の異なるデバイスをサポートしています。このアプリはバックエンドのWebサービスと通信してデータを受信します。シリアル番号/ユニークIDからデバイスタイプを決定

今、Webアプリケーションでは、どのタイプのデバイスに接続しているのかを簡単に判断する方法はありますか?ここで私が利用できる持っているものです。

  1. デバイスのシリアル番号(または一意のID)が(アンドロイドシミュレータで、それは常に000000000000だとiPhoneのシミュレータでフォーマットが実際のiphoneは全く異なることに注意してください)

  2. iphoneアプリで接続はNSMutableUrlRequest/NSURLConnectionを使用して行われ、Android接続ではorg.apache.http.client.HttpClient

  3. と書かれています。サーバーWebアプリケーションはPHPで書かれています。

  4. 私は「ベスト推測」近似のために喜んでいます:私が時間の95%が正しいなら、私の目的には十分です。

ブラックベリーのものはまだわかりません。そのアプリはまだ準備ができていません。

どのようなアイデアや助けも大歓迎です。どうもありがとう。

+0

+1です。でも、私は同じものを探していた。 –

答えて

0

HTTP APIを叩いているユーザーエージェントを調べて、それを嗅ぐことができます。それは時間の少なくとも95%で動作します。 iOSアプリにはCFNetwork/xxx.xx.xのようなものがあります。 Android/Blackberryの場合は、試してみてください。または、ユーザーエージェントを自分で設定するようにアプリを変更して、APIなどのバージョンが正確にわかるようにします。

+0

はい、ユーザーエージェントのスニッフィングは、私が傾けているものです。私はより多くの情報を送信するようにアプリを変更することができますが、この情報を送信していないアプリはすでに動作しません。 –

+0

あまりにも重要ではありません - 現在の出荷アプリは、iPhone対Android vs Blackberryを判断するのに十分なデフォルトのユーザーエージェントを少なくとも送信します。 – mattjgalloway

+0

デフォルトでは、apache httpクライアントは、ユーザエージェント 'Apache-HttpClient/UNAVAILABLE(java 1.4)'を送信します。少なくとも、現在のアンドロイドアプリから取得しています。ブラックベリーが(デフォルトで)より合理的なものを送信するかどうかはわかりませんが、現時点ではブラックベリーアプリは出荷されていませんので、合理的なユーザーエージェントを指定することができます。 –

関連する問題