EasySocial iOS库用于Twitter和Facebook
这个库允许你的应用程序使用Twitter和Facebook,而无需深入了解相关的SDK。它非常易于使用且设计优雅。这将节省你的时间。
许多其他库过于复杂,并提供你在应用程序中不需要的功能。包含的示例项目演示了大部分提供的功能。
EasySocial只做这些事情:
- 发送纯推文
- 通过URL或UIImage/NSData发送带图片的推文
- 从用户的时间线获取数据
- 完整的Facebook连接(登录/登出和自动登录)
- 获取用户信息(objectID,名称等…)
- 在用户的时间线上分享和发布消息
安装
CocoaPods
pod ‘EasySocial’, ‘~> 1.0’
第一部分
- 将
Social.framework添加到你的项目中 - 将
Accounts.framework添加到你的项目中 - 将
EasySocial文件夹拖入你的项目(确保你勾选了“复制项到目标组文件夹”) - 打开XCode中的
<Your Project Name>-Prefix.pch文件。对于XCode 6,你需要从头开始创建一个pch文件从零开始。- 添加到底部:
//现在你不需要在你的项目中其他地方包含这些头文件。#import "EasyFacebook.h"#import "EasyTwitter.h"
第二部分
- 下载并将
FacebookSDK.framework添加到你的项目中。 - 用Facebook注册你的应用以获取App ID
- 确保你在XCode中给出的应用程序的
Bundle ID与你在Facebook上注册的内容相匹配 - 确保你在Facebook中启用了“单点登录”
- 配置
<Your Project Name>-Info.plist文件,插入FacebookAppID,FacebookDisplayName和URL类型键 - 以开发者身份注册你自己的Facebook帐户。这样,你可以在开发过程中测试你的应用程序。在生产环境中,Facebook必须批准你的应用程序才能使用某些功能
- 确保你在XCode中给出的应用程序的
- 在你的项目的
AppDelegate.m文件中,包括:
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{BOOL wasHandled1 = [EasyFacebook handleOpenURL:url sourceApplication:sourceApplication];// BOOL wasHandled2 = [GPPURLHandler handleURL:url sourceApplication:sourceApplication annotation:annotation];// BOOL wasHandled3 = [TumblrAPI handleURL:url];return wasHandled1;// return (wasHandled1 || wasHandled2 || wasHandled3);}
EasyTwitter
方法
在使用EasyTwitter之前,您必须实例化EasyTwitter类。
+ (EasyTwitter *)sharedEasyTwitterClient
该类是一个单例类,意味着只创建了一个实例。在实践中,类会自动实例化,无需您手动操作。您可以使用以下方式使用类:[EasyTwitter sharedEasyTwitterClient].XXX或[[EasyTwitter sharedEasyTwitterClient] XXX].
请求权限和设置帐户
在您的应用程序可以使用Twitter之前,用户必须授予您的应用程序权限。
- (void)requestPermissionForAppToUseTwitterSuccess:(void(^)(BOOL granted, BOOL accountsFound, NSArray *accounts))success failure:(void(^)(NSError *error))failure
BOOL granted将指示用户是否授权。如果用户没有授权,他们必须在iOS内置的“设置”应用程序 -> “隐私” -> “Twitter”中授权权限,以便将来授权。
BOOL accountsFound将指示是否找到了任何系统存储的Twitter帐户(如果granted==YES)。如果没有找到任何帐户,提醒用户在“设置”应用程序 -> “Twitter”中保存他们的Twitter凭据。
NSArray *accounts将包含ACAccount对象。这些表示找到的Twitter帐户。您可以搜索所有ACAccount对象以选择要发送推文的所需帐户。
ACAccount包含两个有用的属性:- .username(类型:字符串,例如finkd)
- .accountDescription(类型:字符串,例如@finkd)
一旦发现所需的帐户,将其设置为。
//在实践中,将其设置为所需的帐户。这是自动设置的默认设置。[EasyTwitter sharedEasyTwitterClient].account = [accounts firstObject];
发送推文
一条推文是一个最多140个字符的消息,通过Twittersphere传播给其他Twitter用户。URL链接可以嵌入在消息中。它们会自动检测并最小化以节省字符。还可以附加图片。所有图片都会上传到Twitter的服务器。
//普通推文- (void)sendTweetWithMessage:(NSString *) message twitterResponse:(void(^)(id responseJSON, NSDictionary *JS= nil,` 推文成功发布。如果它不是nil,那么有问题。问题可以通过阅读[**错误代码**](https://dev.twitter.com/overview/api/response-codes)和**错误消息**来确定。```objective-c//伪代码int errorCode = [[JS [JS= EasyTwitterNoAccountSet,` 它意味着您尝试在没有设置Twitter帐户的情况下发送推文。
时间线
用户的最新推文和转发代表最近的时间线。应该注意的是,home-timeline与user-timeline不同。
- (void)loadTimelineWithCount:(int) count completion:(void (^)(NSArray *data, NSError *error))completion
(int) count是指您希望从主页时间线返回的最近项目的数量。最大值为200。
NSArray *data将包含表示时间线的NSDictionary对象。最近的项目位于index==0。在开发过程中,您可以使用以下内容观察每个项目的具体内容:
//伪代码cell.textLabel.text = [data[row] objectForKey:@"text"]; //项目的主要内容cell.detailTextLabel.text = [[data[row] objectForKey:@"user"] objectForKey:@"""screen_name"""]; //所有者的项目名称
通知
EasyTwitterPermissionGrantedNotification - 当用户授权访问系统存储的Twitter帐户时发布。这并不意味着找到了任何Twitter帐户。
EasyTwitterAccountSetNotification - 当您将ACAccount对象设置为要从中发送推文的Twitter帐户时发布。此通知也会在自动设置默认Twitter帐户(无需您手动操作)时发布。
EasyTwitterTweetSentNotification - 当成功发送推文时发布。通常,更有用的是在NSDictionary *JSONError参数的响应回调块的sendTweetWithMessage:方法中监视response。一个nil错误响应表示成功的推文。
EasyTwitterDelegate
在协议中规定的方法都是可选的。您需要适当地设置delegate属性以订阅协议。它可能对实现示例项目中的这些方法很有用。
showLoadingScreen:在可能耗时的活动开始之前被调用。
hideLoadingScreen:在耗时活动结束后被调用。
预期是,通过UI元素向用户显示后台活动正在进行。
在以下情况下调用委托方法:
requestPermissionForAppToUseTwitterSuccess:failure:sendTweetWithMessage:image:mimeType:requestShowLoadScreen:twitterResponse:failure:sendTweetWithMessage:imageURL:twitterResponse:failure:sendTweetWithMessage:twitterResponse:failure:loadTimelineWithCount:completion:
EasyFacebook
方法
在使用EasyFacebook之前,您必须实例化EasyFacebook类。
+ (EasyFacebook *)sharedEasyFacebookClient
该类是一个单例类,意味着只创建了一个实例。在实践中,类会自动实例化,无需您手动操作。您可以使用以下方式使用类:[EasyFacebook sharedEasyFacebookClient].XXX或[[EasyFacebook sharedEasyFacebookClient] XXX].
方法 - 登录和注销
在与FacebookSDK交互之前,您必须有一个已登录的用户。
- (void)openSession //用于登录- (void)closeSession //用于注销- (BOOL)isLoggedIn //用于检查登录状态
通过调用openSession方法,用户将经历标准的登录过程。这通常涉及到打开官方的Facebook应用程序(如果已安装)。否则,Safari浏览器将被打开。用户将被要求授予您的应用程序访问其详细信息的权限。一旦获得批准,任何将来对openSession的调用都将短暂地打开Facebook应用程序,但几乎会立即转移到您的应用程序中 - 因为用户在过去已经批准了(只要后来没有撤销批准),提供批准不是后来撤销的。
closeSession方法将立即注销用户。
(BOOL)isLoggedIn方法将返回用户当前是否已登录或未登录。
如果用户登录并退出您的应用程序,通常会保存本地缓存的令牌。当您的应用程序再次打开时,用户通常不需要再次登录。这是自动登录功能的一部分。
出于安全原因,如果您想关闭自动登录行为,您可以监听UIApplicationWillTerminateNotification并在调用closeSession时注销用户。
当用户正在登录时,FacebookSDK需要初始请求的权限。 默认权限包括:
如果您想在调用openSession之前修改请求的权限,可以设置readPermissions:
//将readPermissions设置为所需的内容[EasyFacebook sharedEasyFacebookClient].readPermissions = @[@"public_profile", @"email", @"user_friends"];
阅读下面的“通知”部分,了解可用状态更改。
方法 - 获取基本用户信息
在用户登录后,会自动调用获取用户基本信息的方法。如果你想按需获取最新信息,可以调用此方法。
- (void)fetchUserInformation
一旦信息到达,EasyFacebookUserInfoFetchedNotification通知将被发布。发布后,可以使用以下属性提取最新详细信息:
@property NSString *UserEmail- 如果请求了email权限,则可用。默认情况下会请求。@property NSString *UserFirstName@property NSString *UserGender@property NSString *UserObjectID- 通常称为id(唯一于用户 - 存储在数据库中)@property NSString *UserLastName@property NSString *UserLink@property NSString *UserLocale@property NSString *UserName@property NSString *UserTimeZone@property NSString *UserVerified
方法 - 发布权限
发布到时间线需要publish_actions权限。当你的应用准备好进入生产环境时,你还需要获得Facebook的批准。
- (BOOL)isPublishPermissionsAvailableQuickCheck- (void)isPublishPermissionsAvailableFullCheck:(void(^)(BOOL result, NSError *error))responseHandler- (void)requestPublishPermissions:(void(^)(BOOL granted, NSError *error))responseHandler
(BOOL)isPublishPermissionsAvailableQuickCheck检查是否已授予publish_actions权限给当前的access token。由于权限可能在access token发出后更改,或者用户可能通过Facebook网站外部的应用程序更改权限,因此此方法将立即返回,因为它不进行任何REST API调用。
(void)isPublishPermissionsAvailableFullCheck将执行100%准确的检查以确定是否已授予publish_actions权限。它将进行REST API调用并返回一个BOOL result响应。如果result==YES,则发布权限可用。
如果发布权限不可用,您必须通过调用(void)requestPublishPermissions方法来请求它。如果granted==YES,则表示用户已授权。
方法 - 发布内容
要发布和分享内容,需要publish_actions权限。通过调用下面的publishStoryWithParams:completion:方法,它还将自动调用requestPublishPermissions:方法。
- (void)publishStoryWithParams:(NSDictionary *)params completion:(void(^)(BOOL success, NSError *error))completion
(NSDictionary *)params可以具有以下参数:
- link - 我们想要分享的url
- name - 标题
- caption - 子标题
- picture - 与帖子关联的缩略图的url
- description - 链接内容的文本摘要
- message - 主消息出现在所有其他内容之上
BOOL success将在completion块中作为响应。如果success==YES,则分享帖子成功。
例如:
NSDictionary *params = @{@"link" : @"http://www.google.com",@"name" : @"Google",@"caption" : @"#1 search engine",@"picture" : @"https://www.google.com/images/srpr/logo11w.png",@"description" : @"Home page Logo",@"message" : @"hello"};
输出将是:

通知
EasyFacebookLoggedInNotification - 当用户成功登录时发布的。此通知也会在自动登录后发布。
EasyFacebookLoggedOutNotification - 当用户登录或意外退出时发布的。
EasyFacebookUserInfoFetchedNotification - 当用户的基本信息变为可用时发布的。这通常会在用户登录后不久自动发生,或者在显式调用fetchUserInformation方法后发生。有关可用基本信息的详细信息,请参阅上面的信息。
EasyFacebookUserCancelledLoginNotification - 当用户有机会登录但决定取消进程时发布的。用户通常被带到应用程序之外,到官方的Facebook应用程序上登录。如果应用程序未安装,Safari浏览器将打开带有登录对话框的网站。如果应用程序未安装,Safari浏览器将打开带有登录对话框的网站。
EasyFacebookPublishPermissionGrantedNotification - 当用户为应用程序在他们的时间表上发布许可时发布的。
EasyFacebookPublishPermissionDeclinedNotification - 当用户拒绝为应用程序在他们的时间表上发布许可时发布的。
EasyFacebookStoryPublishedNotification - 当分享尝试成功发布在用户的时间线上时发布的。
EasyFacebookDelegate
协议中规定的两种方法都是可选的。您需要将delegate属性适当地设置为订阅协议。将其实现为示例项目中所示的方式可能很有用。
showLoadingScreen:在可能耗时的操作开始之前调用。
hideLoadingScreen:在耗时操作完成后调用。
预期您通过UI元素向用户显示后台活动正在进行。
委托方法在以下操作之前和之后调用:
publishStoryWithParams:completion:
诊断
@property BOOL preventAppShutDown - iOS 8采用了不同的内存管理策略。如果您发现在用户作为登录过程的一部分被带到Facebook应用后,您的应用程序被iOS关闭,那么将此属性设置为YES。
@property BOOL facebookLoggingBehaviourOn - 出于诊断目的,如果您希望FacebookSDK在调试窗口中记录其幕后操作的完整详细信息,则将此属性设置为YES。
最终注意事项
如果您发现这个库对您有用,请在GitHub上给它一个 ⭐️。随时可以fork或提供pull requests。我们非常欢迎任何bug报告。
