2012-03-03 12 views
1

ユースケースのビジネスコンテキストは、複数のプラットフォーム(iOS、Android、Windows Phone 7、BlackBerry、j2me phones)からアプリを提供するバックエンドサーバ(マルチテナント)を構築することです。 )。このビジネスは、提携しているアプリの初回インストールでユーザーに報酬を与えたいと考えています。だから、ビジネスアプリを再インストール(削除&のインストール)からインストールユーザーは初めて別のトラックを望んでいる。そのため、提携後のモバイルアプリは、インストール後にWebサービスを介してバックエンドサーバに一意の識別子(ここで決定した一意の識別子の仕様を使用)を送信することが期待されます&サーバはそれを確認します&初めてのインストールの場合。スマートフォンデバイスのユニークなデバイス識別子

ので、理想的には、我々がここで定義するすべては、次のプロパティを持つユニークなデバイス識別子の仕様..です

  1. それは長いそのデバイスカテゴリ(例えば、すべてのiOSデバイス)の下での生活のために一意である必要があります。したがって、工場出荷時のリセットなどのようなものは、デバイス識別子を変更すべきではありません。
  2. 識別子を偽装するのは簡単ではありません。例えば。あなたはデバイスのソフトウェアツール&あなたがアプリを再インストールすると、アプリが送り返す識別子が変更されます。
  3. 基本プラットフォームは、仕様に記載されている必要な情報を取得するためのAPIを提供します。つまり、公開されたマーケット(App Storeなど)を通じてアプリがデプロイされるため、プライベートAPIなどはありません。
  4. ソリューションは世界中に存在するため、仕様はグローバルに真実でなければなりません。したがって、すべての国の法律は尊重されるべきです。
  5. 解決策は、プラットフォームのすべてのデバイスを対象としたいと考えています。 SIMベースの携帯電話だけでなく、非SIMベースのモバイルデバイス(ipod touch、ipad)でも可能です。 [ユニークなIMEI番号はSIM以外の携帯端末には存在しませんが、アプリをインストールすることができます]

これについて議論する革新的な頭脳を楽しみにしています。

お読みいただきありがとうございます。 Windowsの携帯電話7 device unique idについては

答えて

3

あなたは一貫性のある一意のIDを与えるためにデバイスを信頼していますが、脱獄されたiOSデバイスではUDIDを変更できますが、Androidの場合はそうでしょう)、MACアドレスはソフトウェアで変更できるので無用です。

IMEIやIMSIのようなものも偽造することができます。 「最良の」ソリューションは、信頼できる当事者がユーザーアカウントのプロパティを設定できるログインサーバー側を持つことです。

相手側に一貫性のある、または「不正ではない」情報を提供することは、災害のためのレシピであり、あなたが言うように「報酬を放棄する」とすれば、コストがかかることになります。

ビジネスケースを修正してください。

+0

ええと、私はIMEIが偽装(デバイス識別子)されていてもIMSIだと認識していますか? IMSIは、あなたの「最良の」解決策よりも安全でない場合でも、少なくとも安全であるべきです。 – Yusufk

+0

元のポスターは、デバイス上のIMEI/IMSIを物理的に検証できないため、正しいIMEIまたはIMSIをデバイスが提供していると仮定していました。したがって、デバイス(または第三者)があなたに正当な情報を提供することを期待&信頼するならば、あなたはあなたの製品を間違って構築してしまいます。 –

+0

IMEIはデバイスがあなたに与えるものですが、IMSIはSIMから照会されます。私はIMEIを編集する方法を知っています.IMEIはハンドセットのファームウェアに保存されている値を上書きしますが、IMSIはネットワークがSIMに割り当てるものであり、オーバーライドすることはほとんど不可能です。 – Yusufk

2

DeviceExtendedPropertiesクラスを介してアクセスすることができますMSDNから

object DeviceUniqueID; 
byte[] DeviceIDbyte=null;  
if (DeviceExtendedProperties.TryGetValue("DeviceUniqueId", out DeviceUniqueID)) 
DeviceIDbyte = (byte[])DeviceUniqueID; 
string DeviceID = Convert.ToBase64String(DeviceIDbyte); 
MessageBox.Show(DeviceID); 

説明:A unique hash for the device. This value will be constant across all applications and will not change if the phone is updated with a new version of the operating system.

1

アップルUDIDを卑下しています。だから今は1つしかありませんが、将来、おそらく存在しないでしょう。

Androidの場合、SIM搭載端末は一般に一意のIDを持ちますが、SIMが搭載されていない端末など、常に利用できるとは限りません.Googleの指針は独自のIDを作成することです。あなたはそれを雲のストレージに送ることができるので、いつもそこにある。 http://developer.android.com/guide/topics/data/backup.html

Androidの別の方法として、アプリでアカウントのアクセス権限をリクエストし、ユーザーのGoogleアカウント名(Gmailのアドレス)にアクセスすることができます。あなたは、Gmailのメールアカウント(Androidマーケットなどで使用される)を識別子の形式として使用できます。これは、すべてのデバイスで動作するという利点があります。誰かが電話と2つのAndroidタブレットを持っている場合、それらは1人として識別することができます。

AccountManager accountManager = AccountManager.get(myApplication); 
    Account[] accounts = accountManager.getAccountsByType("com.google"); 
    String gmailEmail = accounts[0].name.trim(); 

答えがほぼプラットフォーム固有であるため、プラットフォームごとに質問する方が良いと思います。

+0

仕様は、デバイスのハードウェア情報に基づいており、ユーザーアカウントではありません。ユーザーアカウントに頼るだけで不正行為になる可能性があります。実際には、ユーザーの身元(電子メール)とデバイスのIDの組み合わせを使用します。これは、特定のアプリのすべてのデバイスとプラットフォームで、1人1つのインストールを追跡して不正なユーザーを最小限に抑えるのに役立つと考えています。我々はその100%ばかげた証拠ではないことを理解していますが。 – user653662

+0

問題は、動作することが保証されているデバイスIDを取得する方法がないことです。 http://android-developers.blogspot.com/2011/03/identifying-app-installations.html –

0

デバイスを識別する方法はいくつかあります。携帯電話では、一般的に、国際移動機アイデンティティ(IMEI)が考慮されるべきである。より新しい電話機には、モバイル機器識別子またはMEIDもあります。 iPodなどの携帯以外の携帯端末を含むiOS端末の場合は、一意の端末IDまたはUDIDがあります。

2

IMSIを使用することをお勧めします。 IMSIは、Windows Phone 7を除くほとんどのプラットフォームでプログラムで使用できる一意のサブスクライバ識別子です。SIMカード/ MSISDNにリンクされているため、SIM/MSISDNが変更された場合に変更されます。 IMSIを使用すると、使用しているハンドセットではなく、エンドユーザーを特定できます。

関連する問題