对于我的应用程序,我希望能够在服务器端识别我的用户,我需要在设备端使用唯一的用户标识。对于Android,我们使用Google登录。我们可以为iPhone使用什么?我不想使用Google登录,因为它不是iOS用户原生的。我想在iOS生态系统中使用本机等价物。
答案 0 :(得分:1)
Apple会告诉您使用vendor Identifier:
UIDevice.current.identifierForVendor?.uuidString
设备上的所有应用都是一样的。
要回答有关通知的问题,您可以在委托回调中获取标识符。
optional func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data)
deviceToken is documented as:
deviceToken
A globally unique token that identifies this device to APNs. Send this token to the server that you use to generate remote notifications. Your server must pass this token unmodified back to APNs when sending those remote notifications.
APNs device tokens are of variable length. Do not hard-code their size.
答案 1 :(得分:0)
您可以使用CloudKit访问当前用户的唯一记录/ ID。由于长用户使用相同的AppleID,因此无论设备如何,都应该是唯一的。
let container = CKContainer.default()
container.fetchUserRecordID { (recordId, error) in
if error != nil {
print("Handle error", error)
} else{
print("recordId", recordId, recordId.recordName)
}
}
您还可以获取更多信息,例如姓名,电子邮件,电话等,但有其他权限
container.requestApplicationPermission(.userDiscoverability) { (status, error) in
container.discoverUserIdentity(withUserRecordID: recordId!, completionHandler: { (userID, error) in
print(userID?.hasiCloudAccount)
print(userID?.lookupInfo?.phoneNumber)
print(userID?.lookupInfo?.emailAddress)
print((userID?.nameComponents?.givenName)! + " " + (userID?.nameComponents?.familyName)!)
})
}
确保在项目功能设置中启用iCloud / CloudKit服务