Tôi muốn lưu tối đa một bản ghi (ví dụ: xếp hạng) cho mỗi người dùng trong bảng của cơ sở dữ liệu công khai. Đối với điều này tôi cần phải lưu ID người dùng hiện tại hoặc ID thiết bị. Nhưng làm thế nào tôi có thể nhận được nó?Cách lấy ID người dùng hiện tại trong CloudKit?
Trả lời
Bạn sẽ muốn gọi -[CKContainer fetchUserRecordIDWithCompletionHandler:]
để lấy dòng điện ID người dùng ghi lại:
Nhận iCloud ID/CloudKit Ghi ID với Swift 2
Dưới đây là một đoạn mà tôi đang sử dụng luôn để lấy iPhone ID iCloud của người dùng (Apple gọi đó là ID bản ghi CloudKit) cho ứng dụng iOS.
Điều duy nhất bạn cần làm trong Xcode là kích hoạt hộp kiểm "CloudKit" trong khả năng iCloud của dự án của bạn. Bạn không cần phải chủ động sử dụng CloudKit - nó chỉ là cốt lõi của tất cả các hoạt động iCloud kể từ iOS 8.
Điều quan trọng cần biết là Apple không bao giờ trực tiếp trưng ra ID iCloud thực nhưng luôn trả về một băm bảo mật ID iCloud và ID ứng dụng của bạn. Nhưng điều đó không nên lo lắng bạn vì chuỗi vẫn là duy nhất cho mỗi người dùng ứng dụng của bạn trên tất cả các thiết bị của mình và có thể được sử dụng làm thay thế đăng nhập.
Chức năng của tôi, không đồng bộ và trả về đối tượng CKRecordID tùy chọn. Thuộc tính thú vị nhất của đối tượng CKRecordID đó là recordName.
CKRecordID.recordName
là chuỗi ký tự 33, ký tự đầu tiên luôn là dấu gạch dưới, 32 ký tự duy nhất (== ID người dùng iCloud được mã hóa cho ứng dụng của bạn). Nó trông giống như: "_cd2f38d1db30d2fe80df12c89f463a9e"
import CloudKit
/// async gets iCloud record name of logged-in user
func iCloudUserIDAsync(complete: (instance: CKRecordID?, error: NSError?) ->()) {
let container = CKContainer.defaultContainer()
container.fetchUserRecordIDWithCompletionHandler() {
recordID, error in
if error != nil {
print(error!.localizedDescription)
complete(instance: nil, error: error)
} else {
print("fetched ID \(recordID?.recordName)")
complete(instance: recordID, error: nil)
}
}
}
// call the function above in the following way:
// (userID is the string you are intersted in!)
iCloudUserIDAsync() {
recordID, error in
if let userID = recordID?.recordName {
print("received iCloudID \(userID)")
} else {
print("Fetched iCloudID was nil")
}
}
Tôi nhận được một ngoại lệ khi tôi làm CKContainer.defaultContainer() libC++ abi.dylib: chấm dứt với uncaught ngoại lệ của loại CKException –
Dưới đây là đoạn mã cho Swift 3
import CloudKit
/// async gets iCloud record ID object of logged-in iCloud user
func iCloudUserIDAsync(complete: @escaping (_ instance: CKRecordID?, _ error: NSError?) ->()) {
let container = CKContainer.default()
container.fetchUserRecordID() {
recordID, error in
if error != nil {
print(error!.localizedDescription)
complete(nil, error as NSError?)
} else {
print("fetched ID \(recordID?.recordName)")
complete(recordID, nil)
}
}
}
// call the function above in the following way:
// (userID is the string you are interested in!)
iCloudUserIDAsync { (recordID: CKRecordID?, error: NSError?) in
if let userID = recordID?.recordName {
print("received iCloudID \(userID)")
} else {
print("Fetched iCloudID was nil")
}
}
là điều này làm việc trong ios 10.3? – RejoylinLokeshwaran
Có, nó sẽ hoạt động trên iOS 10.3 –
tôi nhận được lỗi như, Chấm dứt ứng dụng do ngoại lệ chưa nắm bắt 'CKException', lý do: 'Ứng dụng bị thiếu yêu cầu quyền lợi com.apple.developer.icloud-services' – RejoylinLokeshwaran
- 1. Cách nhận ID người dùng hiện tại Prestashop?
- 2. asp.net MVC nhận hiện tại người dùng đăng nhập id
- 3. JavaScript - Cách lấy tên của người dùng hiện tại
- 4. Cách lấy tên người dùng hiện tại bằng Meteor
- 5. MVC3 + Cách lấy tên người dùng hiện tại đã đăng nhập của người dùng
- 6. Django, cách lấy người dùng theo id, sử dụng django.contrib.auth.models.User
- 7. tweepy cách lấy tên người dùng từ id
- 8. Magento: Cách lấy vai trò người dùng từ id người dùng
- 9. Lấy tên và họ của người dùng Windows hiện tại?
- 10. Cách nhận người dùng hiện tại và cách sử dụng Lớp người dùng trong MVC5?
- 11. Laravel - Cách nhận người dùng hiện tại trong AppServiceProvider
- 12. Lấy id người dùng của nhận dạng tên người dùng 2.0
- 13. Lấy #id từ URL hiện tại
- 14. Cách nhận id người dùng hiện đang đăng nhập của người dùng ở Django?
- 15. Người dùng hiện tại trong Magento?
- 16. Cách lấy thư mục chính của người dùng hiện tại trong Windows
- 17. Cách lấy múi giờ của người dùng hiện tại trong C#
- 18. Cách lấy tên người dùng hiện tại thay vì nhận dạng AppPool trong logfile bằng Log4Net
- 19. Cách lấy ID cá thể hiện tại từ boto3?
- 20. Phát hiện tên người dùng từ ID tiến trình
- 21. Cách nhận người dùng hiện tại trong lõi asp.net
- 22. Yii2 - Lấy ID hành động hiện tại trong main.php
- 23. Giao diện người dùng jQuery, cách lấy id phần tử trong đó thả phần tử?
- 24. Sự khác biệt giữa ID người dùng thực, ID người dùng hiệu quả và ID người dùng đã lưu
- 25. Ẩn id người dùng trong thanh url
- 26. Cách tốt nhất để lấy SID của người dùng hiện tại là gì?
- 27. Instagram API cách nhận ID người dùng?
- 28. VBA Cách lấy đường dẫn đến thư mục dữ liệu Ứng dụng Người dùng Hiện tại?
- 29. Tôi có thể lấy thư mục người dùng hiện tại bằng cách nào?
- 30. Có cách nào để MS Access lấy người dùng Active Directory hiện tại không?
Làm thế nào để có được người đàn ông này một ly bia !!! –
Tôi nhận được một ngoại lệ khi tôi làm CKContainer.defaultContainer() libC++ abi.dylib: chấm dứt ngoại lệ không bị loại CKException –