有沒有辦法讓我檢查用戶是否在打開應用程序時登錄到iCloud?我希望能夠引導他們進入設置頁面,如果他們沒有登錄,並且他們已經登錄到iCloud並且之前已經使用了該應用程序 - 我想跳過登錄頁面....檢查用戶是否登錄到iCloud? Swift/iOS
I看着蘋果的iCloud和Cloudkits文檔,但無法找到任何有幫助的東西!這甚至有可能做到嗎?
有沒有辦法讓我檢查用戶是否在打開應用程序時登錄到iCloud?我希望能夠引導他們進入設置頁面,如果他們沒有登錄,並且他們已經登錄到iCloud並且之前已經使用了該應用程序 - 我想跳過登錄頁面....檢查用戶是否登錄到iCloud? Swift/iOS
I看着蘋果的iCloud和Cloudkits文檔,但無法找到任何有幫助的東西!這甚至有可能做到嗎?
你在這裏 - 希望自我解釋。欲瞭解更多關於下面的NSFileManager函數的Apple文檔。
func isICloudContainerAvailable()->Bool {
if let currentToken = NSFileManager.defaultManager().ubiquityIdentityToken {
return true
}
else {
return false
}
}
見下文提取: 一個不透明的標記表示當前用戶的身份的iCloud(只讀) 當icloud是目前可用的,這個屬性包含表示當前用戶的身份的不透明對象。如果iCloud由於任何原因不可用或者沒有登錄用戶,則此屬性的值爲零。
我認爲這個異步方法是首選,所以你不要在你檢查時阻塞。
CKContainer.defaultContainer().accountStatusWithCompletionHandler { (accountStat, error) in
if (accountStat == .Available) {
print("iCloud is available")
}
else {
print("iCloud is not available")
}
}
如果你只是想知道,如果用戶在到iCloud登錄,可以使用同步方法:
if NSFileManager.defaultManager().ubiquityIdentityToken != nil {
print("iCloud Available")
} else {
print("iCloud Unavailable")
}
不過,如果你想知道爲什麼的iCloud ISN 「T啓用後,您可以使用異步方法:
CKContainer.defaultContainer().accountStatusWithCompletionHandler { (accountStatus, error) in
switch accountStatus {
case .available:
print("iCloud Available")
case .noAccount:
print("No iCloud account")
case .restricted:
print("iCloud restricted")
case .couldNotDetermine:
print("Unable to determine iCloud status")
}
}
如果你想使用異步方法,但不關心爲什麼,你應該檢查accountStatus
是available
,而不是檢查,這不是noAccount
:
CKContainer.defaultContainer().accountStatusWithCompletionHandler { (accountStatus, error) in
if case .available = accountStatus {
print("iCloud Available")
} else {
print("iCloud Unavailable")
}
}
注意,這個答案是寫在斯威夫特3.在斯威夫特版本使用超過3使用舊:
CKContainer.defaultContainer().accountStatusWithCompletionHandler { (accountStatus, error) in
switch accountStatus {
case .Available:
print("iCloud Available")
case .NoAccount:
print("No iCloud account")
case .Restricted:
print("iCloud restricted")
case .CouldNotDetermine:
print("Unable to determine iCloud status")
}
}
或
CKContainer.defaultContainer().accountStatusWithCompletionHandler { (accountStatus, error) in
if case .Available = accountStatus {
print("iCloud Available")
} else {
print("iCloud Unavailable")
}
}
http://stackoverflow.com/questions/11509601/how-to-detect-if-a-user-is-signed-in-to-icloud 這讓我覺得對此沒有解決辦法。 – pmoney13