我目前正在開發一款iPhone應用程序,要求我使用Facebook帳戶。我還需要使用核心數據在iPhone上存儲用戶相關數據。問題是我知道核心數據是iPhone特有的。這意味着如果我使用某個iPhone,那麼特定的iPhone將擁有我打算給予每個用戶的某些屬性。但是,我希望能夠做到這一點,以便如果用戶決定登錄另一部手機,他或她可以使用Facebook登錄並向該用戶而不是iPhone的所有者查看相關數據。這可能嗎?或者我應該單獨使用MYSQL,以便從另一臺在線服務器獲取Facebook用戶相關信息。Objective-C使用Facebook帳戶和核心數據
0
A
回答
0
這是你最想使用iCloud的東西。 Start here with the iCloud Key Value Store。
這可以讓你做的是將數據保存到用戶存儲而不是直接設備。這會給你兩件事:
- 如果用戶轉到另一個設備,你不需要再次登錄它們。
- 如果用戶在一臺設備上註銷或另一個用戶通過不同的Apple ID登錄,則可以檢測到該事件並自動將用戶註銷。
您也可以直接使用Sqlite iCloud存儲來代替鍵值存儲,但我不會推薦它,除非您只是iOS7 +應用程序,因爲它沒有穩定性的最佳聲譽。該代碼來實現鍵值存儲對於用戶可能是這個樣子:
NSData *iCloudToken = (NSData *)[[NSFileManager defaultManager] ubiquityIdentityToken];
__weak typeof(self) weakSelf = self;
if (iCloudToken) {
NSLog(@"iCloud is available, setting up ubiquity container");
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
__strong typeof(self) strongSelf = weakSelf;
strongSelf.icloudContainerURLString = [NSString stringWithFormat:@"%@", [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil]];
NSLog(@"Ubiquity container setup complete");
});
} else {
NSLog(@"iCloud is unavailable");
}
如果iCloud中不可用,你可以只使用本地鑰匙扣使用這樣的事情(此代碼使用做同樣的事情該SSKeychain wrapper爲的CoreFoundation鑰匙扣服務):
- (NSString *)userID
{
if (self.iCloudAvailable) {
return [[NSUbiquitousKeyValueStore defaultStore] stringForKey:kUserIDKey];
} else {
NSArray *accounts = [SSKeychain accountsForService:kDeliveriesServiceName];
return [[accounts firstObject] valueForKey:kSSKeychainAccountKey];
}
}
- (NSString *)userPassword
{
if (self.isCloudAvailable) {
return [[NSUbiquitousKeyValueStore defaultStore] stringForKey:kUserPasswordKey];
} else {
return [SSKeychain passwordForService:kDeliveriesServiceName account:[self userID]];
}
}
- (void)setUserID:(NSString *)userID andPassword:(NSString *)password;
{
NSParameterAssert(userID);
NSParameterAssert(password);
if (self.isCloudAvailable) {
[[NSUbiquitousKeyValueStore defaultStore] setString:userID forKey:kUserIDKey];
[[NSUbiquitousKeyValueStore defaultStore] setString:password forKey:kUserPasswordKey];
[[NSUbiquitousKeyValueStore defaultStore] synchronize];
} else {
[SSKeychain setPassword:password forService:kDeliveriesServiceName account:userID];
}
}
希望這有助於。
相關問題
- 1. 使用核心數據創建用戶配置文件/帳戶
- 2. iOS:在覈心數據中使用GCD和核心數據
- 3. ASP.NET核心,Microsoft帳戶登錄和AADSTS70001
- 4. 使用核心數據與核心圖
- 5. 核心數據和核心位置
- 6. 使用NSPredicate和核心數據NSFetchedResultsController
- 7. 使用核心數據與NSPredicate和NSDate
- 8. 骨料和使用之核心數據
- 9. 有效使用核心數據和NSManagedObjectContext
- 10. 使用CloudKit核心數據
- 11. 使用與核心數據
- 12. 用戶核心數據添加關係
- 13. 雲核心數據存儲多用戶
- 14. 使用核心數據提取數據
- 15. 備份和恢復核心數據的SQLite(核心數據)
- 16. UITableView與核心數據和非核心數據源
- 17. UIAlertView中和核心數據
- 18. 核心數據,KVO和NSInternalInconsistencyException
- 19. 核心數據和NSOperation
- 20. 核心數據和CLGeocoder
- 21. UIManagedDocument和核心數據
- 22. 核心數據和NSManagedObject
- 23. 核心數據和關係
- 24. RestKit和核心數據
- 25. 核心數據和didSelectRowAtIndexPath
- 26. NSUserdefault和核心數據
- 27. 核心數據和JSON
- 28. 核心數據和@dynamic
- 29. 的NSLog和核心數據
- 30. InAppSettingsKit和核心數據