一个 iOS SDK,允许轻松将 Scholica API 集成到您的应用中,并允许用户使用 Scholica 登录和保存数据。
您可以通过使用 CocoaPods 或手动下载 SDK 文件来安装 Scholica SDK。
只需将 Scholica
目录中的所有文件拖放到您的 Xcode 项目中。
导入 Scholica 头文件,大功告成
#import "Scholica.h"
如果您需要一个示例实现进行参考,请查看 schedule-ios 项目。特别是那里的 登录控制器 可能值得一试。
当用户安装了 Scholica 应用时,Scholica SDK 将尝试使用原生登录界面进行登录。要设置此操作,您需要将 URL 方案添加到您的 .plist
文件中的 URL 类型键下。创建一个名为 URL 方案的单一数组子项。给这个单一项提供一个完整的消费者密钥。
这用于确保应用程序将接收登录流程的回调 URL。
您的 .plist
应该如下所示
通过设置消费者密钥和密钥来启动 Scholica。通常最好在 AppDelegate 中的 application:didFinishLaunchingWithOptions:
方法中这样做。
[[Scholica instance] setConsumerKey:@"<CONSUMERKEY>"];
[[Scholica instance] setConsumerSecret:@"<CONSUMERSECRET>"];
请通过发送邮件到 [email protected] 请求您的应用程序的消费者密钥和密钥。
openURL
回调登录成功或失败之后,Scholica 将使用您设置的 URL 方案将用户重定向回您的应用。要处理此请求,请确保您的 AppDelegate 中的 openURL
方法如下所示
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
if(![[Scholica instance] applicationDelegateOpenURL:url sourceApplication:sourceApplication]){
// Override point for URL scheme handling if requested URL is not related to Scholica login
}
return YES;
}
有趣的部分。使用 [[Scholica 实例] currentSession]
来评估用户是否已经登录(使用 NSUserDefaults 中的信息),否则调用 signIn
方法。
if([[Scholica instance] currentSession]){
// User is logged in, do work such as go to next view controller.
}else{
// Call signIn method
[[Scholica instance] signIn:^(SALoginStatus status) {
NSLog(@"Successful sign in!");
} failure:^(SALoginStatus status) {
NSLog(@"Something went wrong...");
}];
}
在登录成功或失败后,分别调用 success
或 failure
方法。它们都是类型为 ScholicaLoginCallback
的,接受单个参数:一个类型为 SALoginStatus
的枚举,其值等于以下这些值之一:
当登录成功时,Scholica 对象将包含变量 accessToken
,它将被 SASession
自动保存到 NSUserDefaults 中。要禁用此行为并手动保存访问令牌以供重用,将 autoSaveAccessToken
设置为 NO。
[[Scholica instance] setAutoSaveAccessToken:NO];
调用 profile
方法以接收有关当前用户的信息。
[[Scholica instance] profile:^(SAUserObject *user) {
NSLog(@"Hi %@, welcome!", user.name);
}];
在失败的情况下,user
为 nil
。
调用 request
方法。
[scholica request:@"/communities/1" callback:^(SARequestResult *result) {
if(result.status == SARequestStatusOK){
// Request was successful
NSLog(@"The title of this community is %@!", [result.data objectForKey:@"title"]);
}else if(result.error.code > 900){
// Scholica error
NSLog(@"Scholica error: ", result.error.errorDescription);
}else{
// Network error
NSLog(@"Network error.");
}
}];
执行 API 请求(如这里所描述的方法)就像设置一个方法(即 /me
)、可选地设置多个参数(在 NSDictionary 的 fields
中)和一个回调,该回调接受一个类型为 ScholicaRequestResult
的参数,该参数包含:
status
- 一个值为 SARequestStatusOK 或 SARequestStatusError 的 SARequestStatus
枚举data
- 当状态为 SARequestStatusOK 时,包含 API结果的 NSDictionary
error
- 当状态为 SARequestStatusError 时,一个 SARequestError
对象(属性:code、errorDescription、documentationURL)有关更多信息,请参阅 SDK 类引用。