10

私の現在のアプリケーションでは、ユーザーがさまざまな iOS デバイスから自分のアカウントにログインできるようにする必要があります。現在、トークン値からユーザー認証を行っています。しかし、複数のデバイスのログインをサポートするには、これを行う別の方法を見つける必要があります。

uuidそこで、認証+セキュリティのためにトークンとともにデバイスを保存することを考えました。次に、デバイスの を使用できないことがわかりましたuuid。代わりに、identifierForVendorユーザーまたはデバイスの情報を常に提供する場合と提供しない場合があるものを使用する必要があります。

では、ios で同じユーザー アカウントに対してこの複数デバイスのログイン機能を実現するためのより適切で適切な方法を提案できる人はいますか?

4

3 に答える 3

9

デバイスの UUID を使用することは許可されていませんが、独自の UUID を生成してデバイスの UserDefaults に保存することはできます。

identifierForVendor の使用は 100% 信頼できるわけではありません。これは iOS6 以降でのみ機能し、ユーザーはそれを提供しないようにオプトアウトできるため、これは悪い選択です。

これは、私がインターネットからコピーしたいくつかのコードで、今日までそれを使用しています。ソースを見つけて、私の答えを少し更新しようとします。編集:ソース

これにより、UUID が生成され、UserDefaults に保存されます。

- (NSString *)createUUID
{
  CFUUIDRef theUUID = CFUUIDCreate(NULL);
  CFStringRef string = CFUUIDCreateString(NULL, theUUID);
  CFRelease(theUUID);
  [[NSUserDefaults standardUserDefaults] setObject:(__bridge NSString *)string forKey:@"UUID"];
  [[NSUSerDefaults standardUserDefaults] synchronize];
  return (__bridge NSString *)string;
}

そして、生成された UUID を読み取る必要があるときはいつでも:

- (NSString*)UUID
{
    return [[NSUserDefaults standardUserDefaults] ObjectForKey:@"UUID"];
}

これで、自分のユーザーの ID を追加することもできるので、どの UUID がどのユーザーにリンクされているかを知ることができます..

これは、それがどのように機能するかの大まかなスケッチです

于 2013-10-04T11:18:17.363 に答える
0

UUID を作成する標準的な方法を使用する必要があります。Apple は、デバイスを追跡することを望んでいません。

 To create a unique identifier specific to your app, you can call the CFUUIDCreate function to
 create a UUID, and write it to the defaults database using the NSUserDefaults class. (Source)

独自のライブラリを作成するのではなく、これにライブラリを使用する場合は、この優れたライブラリを次のように使用する必要があります。

CFUUIDRef uuidRef = CFUUIDCreate(kCFAllocatorDefault);
NSString *uuidString = (NSString *)CFUUIDCreateString(NULL,uuidRef);
CFRelease(uuidRef);
于 2013-10-04T11:17:43.110 に答える