一个简单的 SDK,用于从 iOS 应用中访问 Singly。
首先,您需要从 Singly 为您的应用程序获取一个客户端 ID 和客户端密钥。如果您还没有这样做,请通过 Singly 登录 添加您的应用程序。您的客户端 ID 和客户端密钥可以在您的应用程序设置页面找到。
一旦您获取了客户端 ID 和客户端密钥,我们可以开始一个新的 iOS 应用程序或使用现有的一个。如果您从头开始,您可以查看并克隆我们的 骨架项目,该项目已经为 Singly iOS SDK 准备就绪。
开始使用 Singly SDK 的最简单方法是 下载我们的预包装发行版。
从预包装发行版中将 SinglySDK.framework
和 SinglySDK.bundle
文件拖放到您的 Xcode 项目中。将提示您将它们添加到您的目标中;这样做。
Singly SDK 需要连接到一些框架,您可能或可能没有被连接。在构建阶段设置中,将 Accounts
、AddressBook
、AddressBookUI
、Security
、Social
、Twitter
和 QuartzCore
框架添加到“链接二进制与库”阶段。如果您针对 iOS 5,务必将 Social
框架标记为“可选”而不是“必需”。
使用 #import <SinglySDK/SinglySDK.h>
将 Singly SDK 导入您希望使用 SDK 的源文件。
要开始在您的项目中使用 Singly SDK,您首先需要初始化 SinglySession
。您可能会在应用程序刚刚完成后进行此操作,例如,在 application:didFinishLaunchingWithOptions:launchOptions
方法中。
SinglySession *session = [SinglySession sharedSession];
session.clientID = CLIENT_ID;
session.clientSecret = CLIENT_SECRET;
[session startSessionWithCompletion:^(BOOL isReady, NSError *error) {
if (isReady) {
// The session is ready to go!
} else {
// A valid session could not be started. You will need to authenticate
// with a service (from a view controller) to establish a valid
// session.
}
}];
SinglySession
有两个其他属性
accessToken
- 您的 Singly 访问令牌。您通常不需要访问此属性,除非您需要执行不属于当前 Singly SDK 范围的操作。accountID
- 您的 Singly 账户 ID。这两个都是在 NSUserDefaults
中保存的,应使用 SinglyService
或 SinglyLoginViewController
实例进行设置。
Singly iOS SDK会尝试为用户提供最佳的用户体验,根据用户选择的验证服务和设备上的支持情况。要请求授权,要在一个视图控制器中调用以下代码,以显示给定服务的登录视图。
SinglyService *service = [SinglyService serviceWithIdentifier:@"facebook"];
service.delegate = self;
[service requestAuthorizationFromViewController:self];
您请求授权的服务代理应遵循SinglyServiceDelegate
协议。授权请求完成后将调用这些方法。
- (void)singlyServiceDidAuthorize:(SinglyService *)service
{
// We're ready to rock! Go do something amazing!
}
- (void)singlyServiceDidFail:(SinglyService *)service
withError:(NSError *)error
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Login Error"
message:[error localizedDescription]
delegate:self cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
[self dismissViewControllerAnimated:YES completion:nil];
}
如果您需要登录多个服务或提供多个登录服务,则可以使用SinglyLoginPickerViewController
。
SinglyLoginPickerViewController *viewController = [[SinglyLoginPickerViewController alloc] init];
[self presentModalViewController:viewController animated:YES];
一旦我们有一个有效的会话,我们可以开始发送API请求。我们可以使用SinglyRequest
类(它简单地是NSURLRequest
的一个方便的子类)发送GET、POST或任何方法请求。请求只是我们要发送的请求的描述,要实际执行请求,我们使用NSURLConnection
。
以下是一个请求用户资料列表并使用块处理结果的示例。
SinglyRequest *request = [SinglyRequest requestWithEndpoint:@"profiles"];
[NSURLConnection sendAsynchronousRequest:request
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
NSArray *profiles = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
NSLog(@"The profiles result is: %@", profiles);
}];
iPhone SDK允许您使用Singly API将用户设备联系人同步为朋友。除了将返回的这些联系人作为朋友端点中的朋友添加之外,Singly还会允许您看到哪些同龄人已经在使用该应用程序。更多详细信息,请参阅同龄人文档。
// Observe for Contacts Sync Notifications
[NSNotificationCenter.defaultCenter addObserverForName:kSinglyContactsSyncedNotification
object:nil
queue:nil
usingBlock:^(NSNotification *notification) {
NSArray *syncedContacts = (NSArray *)notification.userInfo;
NSLog(@"Synced Contacts: %@", syncedContacts);
}];
// Sync Contacts
[SinglySession.sharedSession syncDeviceContacts];
Singly SDK附带的示例应用程序演示了SDK的所有功能。
在您构建和运行示例应用程序之前,您需要在SinglyConfiguration.h
中提供您的客户端ID和客户端密钥。
请参阅以下说明(在“本地Facebook授权”下)以启用Facebook应用程序回退尝试的测试。
在完成配置后,只需在模拟器中构建并运行项目即可。
如果您希望在iPhone或iPad上运行示例,您需要使用适用于您的设备和Apple开发者账户的配置为项目配置,这超出了本文档的范围。
在克隆项目后,您将在SinglySDK/Documentation
文件夹中找到生成的文档。这些文档会随着Xcode中框架每次成功构建而自动重新生成,前提是您已安装appledoc。
您还可以在http://singly.github.com/iOS-SDK/api查看最新版本的文档或通过Xcode订阅它,链接为http://singly.github.com/iOS-SDK/api/SinglySDK.atom。
Singly SDK直接与设备通信,以支持iOS 6+上的授权,并将尝试回退到已安装的Facebook应用程序,然后是内置的Singly基于Web的授权。要使Facebook应用程序回退正常工作,您需要执行以下步骤:
在Facebook Developers网站上,您需要创建并配置您的应用程序作为“原生iOS应用程序”。您需要设置Info.plist中定义的打包标识符。
您必须在Info.plist中添加以下内容,用您实际的Facebook App ID替换0:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>fb000000000000000</string>
</array>
</dict>
</array>
当无法实现原生集成时,我们回退到启动Facebook应用程序(如果已安装)以完成授权工作流程。为了实现这一点,您需要确保您的应用程序委托实现以下方法,以便完成双向过程
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation
{
return [SinglySession.sharedSession handleOpenURL:url];
}
我们可以回答您的问题,帮助您解决集成问题,并调查我们服务和SDK可能存在的错误。
发现了错误?如果您认为您发现了SDK中的错误,请花点时间在文件错误,并提供尽可能多的关于问题的信息。
加入我们吧。对于问题或只是想打个招呼并炫耀您正在构建的内容,欢迎加入我们的Support HipChat并与我们交谈!
您还可以通过[email protected]或@opie
在Support HipChat联系Singly iOS SDK的维护者,Justin Mecham。
Singly iOS SDK在BSD许可协议的条款下许可。有关更多信息,请参阅LICENSE文件。