2

私はプッシュ通知機能用の iOS アプリに取り組んでいます。iOS デバイスの一意のデバイス ID をサーバーに送信する必要があります。Android では、すべてのデバイスの安全な Android ID を取得します。iOS の一意のデバイス ID を取得する方法はありますか。いくつかの回答が見つかりました ベンダー ID と広告 ID は一意です

code:
Secure.getString(getContext().getContentResolver(),Secure.ANDROID_ID); 
4

7 に答える 7

5

UUIDを取得するには、このコードを使用できます

UIDevice *currentDevice = [UIDevice currentDevice];
NSString *deviceId = [[currentDevice identifierForVendor] UUIDString];

ただし、プッシュ通知にはデバイストークンが必要であり、ユーザーが許可を受け入れてUIApplicationデリゲートメソッドが呼び出された後に作成されます

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
于 2016-09-01T07:30:39.053 に答える
3

iOS デバイスを一意に識別する法的な方法はありません。限目。

侵害ソリューションのみを取得できます: IDFA、ベンダー ID、または APNS デバイス トークン。上記のすべての ID は、デバイスのライフサイクル中に変更される可能性があるため、一意のデバイス識別子として使用することはできません。

于 2016-09-01T07:40:21.797 に答える
1

Objectice-C の場合:

UIDevice *device = [UIDevice currentDevice];

NSString  *currentDeviceId = [[device identifierForVendor]UUIDString];

スイフトの場合:

let device_id = UIDevice.currentDevice().identifierForVendor?.UUIDString
于 2016-09-01T07:30:58.037 に答える
0

Apple のドキュメントに従って、

デバイス トークンは変更される可能性があるため、アプリは起動されるたびに再登録し、受信したトークンをサーバーに返す必要があります。デバイス トークンの更新に失敗すると、リモート通知がユーザーのデバイスに届かない可能性があります。ユーザーがバックアップ データを新しいデバイスまたはコンピューターに復元したり、オペレーティング システムを再インストールしたりすると、デバイス トークンは常に変更されます。新しいデバイスまたはコンピューターにデータを移行する場合、リモート通知がそのデバイスに配信される前に、ユーザーはアプリを 1 回起動する必要があります。

デバイス トークンをキャッシュしないでください。必要なときはいつでもシステムからトークンを取得してください。アプリが以前にリモート通知用に登録されている場合、registerForRemoteNotifications メソッドを再度呼び出しても追加のオーバーヘッドは発生せず、iOS は既存のデバイス トークンをアプリ デリゲートにすぐに返します。さらに、iOS は、アプリの登録または再登録に応答するだけでなく、デバイス トークンが変更されるたびにデリゲート メソッドを呼び出します。

そのため、起動のたびにトークンを再登録するのが最善の方法です。registerForPushNotifications(application)そのために、メソッドを呼び出すことができますapplicationDidFinishLaunching()

上記のメソッドのデリゲート メソッドでは、サーバーに送信didRegisterForRemoteNotificationsWithDeviceTokenできdeviceTokenます。

func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
  let tokenChars = UnsafePointer<CChar>(deviceToken.bytes)
  var tokenString = ""

  for i in 0..<deviceToken.length {
    tokenString += String(format: "%02.2hhx", arguments: [tokenChars[i]])
  }

  print("Device Token:", tokenString)
}
于 2016-09-01T07:30:52.227 に答える
0

私のアプリで行ったように、最初に生成された uuid を使用し、それをキーチェーン ファイルに保存して、一意のデバイス ID として使用できます (uuid はアプリとデバイス トークンの実行ごとに変更されるため)。キーチェーンで生成するカスタムIDは、ユーザーがアプリを何度もアンインストールしてインストールしても永久に残ります

于 2016-12-07T14:49:17.610 に答える
0

受信する必要があります

func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
    var deviceTokenStr = String(format: "%@", deviceToken)
    deviceTokenStr = deviceTokenStr.stringByReplacingOccurrencesOfString("<", withString: "")
    deviceTokenStr = deviceTokenStr.stringByReplacingOccurrencesOfString(">", withString: "")
    deviceTokenStr = deviceTokenStr.stringByReplacingOccurrencesOfString(" ", withString: "")
}

または、一意のデバイス ID を取得する場合は、使用できます

let UUID = NSUUID().UUIDString
于 2016-09-01T08:07:58.200 に答える