我刚刚阅读了一篇文章,其中介绍了如何从iCloud获取令牌以便使用iOS平台执行身份验证。
我们如何将Android和iOS结合起来?
Android如何知道该用户拥有iOS帐号?
我需要哪种凭据才能要求用户验证他们是否已在iOS平台上拥有帐户?
答案 0 :(得分:0)
阿列克谢,
此代码确认有人通过尝试访问iCloudKit容器登录到iCloud。第一种方法检查并发送通知,如果它失败,则由所述失败触发的第二种方法将用户分流到控制面板,以便他们可以登录iCloud。
func isAuthorized4Cloud() {
container = CKContainer(identifier: "iCloud.X")
publicDB = container.publicCloudDatabase
privateDB = container.privateCloudDatabase
var userID: CKRecordID!
container.fetchUserRecordID( completionHandler: { recordID, error in
if error == nil {
userID = recordID
print("files_setup userID \(userID.recordName)")
NotificationCenter.default.post(name: Notification.Name("cloudConnected"), object: nil, userInfo: nil)
} else {
NotificationCenter.default.post(name: Notification.Name("noCloud"), object: nil, userInfo: nil)
print("files_setup \(error?.localizedDescription)")
}
})
}
在您的视图中控制器......
NotificationCenter.default.addObserver(self, selector: #selector(noCloud), name: Notification.Name("noCloud"), object: nil)
func noCloud(notification:NSNotification) {
DispatchQueue.main.async {
self.navigation.isHidden = true
let alert = UIAlertController(title: "Stop", message: "Sorry, you need to log into iCloud ...", preferredStyle: UIAlertControllerStyle.alert)
let settingsAction = UIAlertAction(title: "Settings", style: .default) { (_) -> Void in
guard let settingsUrl = URL(string: UIApplicationOpenSettingsURLString) else {
return
}
if UIApplication.shared.canOpenURL(settingsUrl) {
UIApplication.shared.open(settingsUrl, completionHandler: { (success) in
print("Settings opened: \(success)") // Prints true
})
}
}
alert.addAction(settingsAction)
let cancelAction = UIAlertAction(title: "Cancel", style: .default, handler: nil)
alert.addAction(cancelAction)
self.present(alert, animated: true, completion: nil)
}
}