2013-08-16 10 views
10

アップルはアプリのUnique Device Identifierを推奨していないので、MDMに登録されているデバイスにエンタープライズアプリケーションをリンクする最良の方法はありますか?iOSのユニークな識別子MDM

MDMプロトコルのリファレンスドキュメントから、登録では引き続きチェックイン手順にUDIDが使用されています。

新しいidentifierForVendorは、チェックインのUDIDと同じではないため、使用できません。

  1. デバイスがチェックインしますMDMサーバにトークンとデバイスUDIDと(AppleはAPIを削除されたもの)
  2. デバイスがお送りします、私は私のMDMソリューションを実装する方法を更新してみましょうデバイス情報をMDMサーバーに送信する(Wifi MACアドレス、シリアル番号、OSバージョン、その他の情報)
  3. RESTful API経由でMDMサーバーと通信するクライアントアプリケーションがあります。 (以前は私は鍵識別子としてUDIDを使用していました)

私はMACアドレスの使用を考えていましたが、最新のiOS 7ではシステムは常に02:00:00:00:00という値を返します。

また、デバイスのシリアル番号も取得できません。

私の質問では、このデバイス上のこのアプリケーションが(3)のサーバー上のこのMDM登録に属していることをどのように知ることができますか。今、アプリケーションは、チェックインされたプロセスで参照される共通のキーを持っていません。サーバーはどのデバイスをどのように認識しますか?

ありがとうございました。

+0

あなたの問題を解決できましたか?私のものはかなり同じです。 – noircc

+0

これを回避する唯一の方法は、identifierForVendorを使用してKeychainに格納して、ユーザーがEnterprise Appを再インストールした場合でもidentifierForVendorが残るようにすることです。 – adiman

+0

答えのためのバンプ、私は同じ問題を経験していますが、まだ解決策を見つけていません。 – sm0ke21

答えて

5

iOS 7で新しいManaged Apps設定機能を使用するのが最善の方法ですが、おそらく唯一の方法は、MDMにAPIキーのようなものをアプリにプッシュすることです。それから、あなたのアプリはMDMサーバや他のウェブサービスにあなたのコールのキーを提示します。

設定をアプリにプッシュすると、次のような方法でAPIキーを引き出すことができます。主流のMDMソリューションのほとんどは、最新のバージョンですでにこの種の機能をサポートしています。

NSDictionary *config = [[NSUserDefaults standardUserDefaults] dictionaryForKey:@"com.apple.configuration.managed"]; 
NSString *apiKey = config[@"kAPIKey"]; 

if (apiKey) { 
    //We got an API key and we can use it 
} else { 
    //We didn't get an API key...something has gone wrong 
} 
0

私は数ヶ月前に見つかったこの情報を読んでいます。 http://www.doubleencore.com/2013/04/unique-identifiers/

そこから私はよく役立ったCFUUIDメソッドを使用しました。具体的にはID方式のベースとしてMACを阻止するためにMACを照会するとき

NSString *uniqueID = [NSString stringWithFormat:@"%@", CFUUIDCreateString(NULL, CFUUIDCreate(NULL))];

+1

問題は、MDMプロトコルがペイロードにCFUUIDのオプション要求を持っていないことです。 MDMは、UDIDおよびその他のハードウェア情報のみを送信します。したがって、CFUUIDをMDMサーバーに送信したものと関連付けることはできません。 – adiman

0

は、iOS 7では、Appleは今、常に固定の値を返します。だからあなたは本当に - [UIDevice identifierForVendor]を使うか、インストールごとのUUIDを作成するべきです。

+0

[UIDevice identifierForVendor]は、MDMペイロードによるデバイスUDIDと一致しません。それは問題だよ – adiman

+0

私はまた、私のアプリケーションで同じ問題に直面している。ユーザーが自分のデバイスでOSを更新したときに起こったことにも1つの問題があります。 – Developer

+0

だから、私たちのアプリケーションでは、ユーザートークン(プッシュ通知を使用している場合)が必要です。 – Developer

0

[UIDevice uniqueIdentifier]は、iOS 6.0では[[UIDevice identifierForVendor] UUIDString]に置き換えられました。

2

しかしlidsinkerの答えが真である、私はので、この探しているいくつかの他の人が助けすることができ、それに焦点を当ててみましょう。

エンタープライズアプリケーションを作成して、MDM経由でインストールできます。 デバイスを登録すると、MDMはエンタープライズアプリケーションをデバイスにインストールできます。 MDMは、NSUserDefaultでデフォルト設定を設定することもできます。

アプリは上記のように起動するたびに読むことができますlidsinkerさんの回答です。

アップルはここに例を示します。 https://developer.apple.com/library/content/samplecode/sc2279/Introduction/Intro.html

+0

このアプローチは、アプリケーションが登録されたデバイスでのみ動作することを保証できますか?誰かが登録されたデバイスからアプリを抽出し、それを未登録のデバイスにインストールできるとしたら、それは可能でしょうか? –

関連する問題