SDK Dropbox sử dụng AppDelegate của bạn làm người gọi lại. Vì vậy, khi bạn đã gọi [[DBSession sharedSession] linkFromController:self];
SDK Dropbox sẽ trong bất kỳ trường hợp nào, hãy gọi phương thức – application:openURL:sourceApplication:annotation:
của AppDelegate của bạn.
Vì vậy, trong AppDelegate bạn có thể kiểm tra bằng [[DBSession sharedSession] isLinked]
nếu đăng nhập thành công hay không. Thật không may là không có gọi lại cho viewController của bạn, vì vậy bạn phải thông báo cho nó bằng các phương tiện khác (tham chiếu trực tiếp hoặc đăng thông báo).
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
if ([[DBSession sharedSession] handleOpenURL:url]) {
if ([[DBSession sharedSession] isLinked]) {
// At this point you can start making API Calls. Login was successful
[self doSomething];
} else {
// Login was canceled/failed.
}
return YES;
}
// Add whatever other url handling code your app requires here
return NO;
}
Cách khá lạ khi gọi lại ứng dụng này được Dropbox giới thiệu do có vấn đề với chính sách của Apple. Trong các phiên bản cũ hơn của SDK, một trang Safari bên ngoài sẽ được mở để thực hiện đăng nhập. Apple sẽ không chấp nhận các ứng dụng như vậy tại một thời điểm nào đó. Vì vậy, các Dropbox guys giới thiệu đăng nhập bộ điều khiển xem nội bộ, nhưng giữ AppDelegate là người nhận kết quả. Nếu người dùng đã cài đặt ứng dụng Dropbox trên thiết bị của mình, thông tin đăng nhập sẽ được chuyển đến Ứng dụng Dropbox cũng như AppDelegate sẽ được gọi trở lại.
nó làm việc độc đáo ... cảm ơn! – orafaelreis
cảm ơn bạn, tôi đã mất hàng giờ để tìm kiếm thứ như thế này! –
Cảm ơn bạn, nó hoạt động cho tôi! –