GPActivityViewController
UIActivityViewController 的替代品
支持的活动
- Vkontakte
- Odnoklassniki
- 邮件
- 消息
- 复制
- 相册
- 地图
- Safari
要求
- Xcode 6.3+
- 部署目标 iOS7.0+
- ARC
注意:2.0.2 — 支持iOS5的最新版本
特点
- 支持横幅
- 分页
- 自定义活动
- 活动自定义
- ActivityViewController 完成处理程序
进一步工作
- UIActivityViewController的替代品(使用相同的操作)
- iOS7外观和填充
- 通用消息编写器
安装
推荐使用 CocoaPods 包管理器。
使用CocoaPods安装时,请打开您的Podfile并添加
pod 'GPActivityViewController', :git => 'https://github.com/gpinigin/GPActivityViewController.git'
社交网络集成
以下列出的社交网络应设置应用程序回调,更多信息请参阅“应用程序回调”章节。
Facebook(仅2.0.x版本支持)
- 在您的info.plist文件中设置 FacebookAppID 属性,例如FacebookAppID = 12345678
- 设置facebook重定向的URL方案:fbFacebookAppID,其中FacebookAppID是Facebook应用程序ID
Odnoklassniki
- 在您的info.plist文件中设置 OdnoklassnikiAppID、OdnoklassnikiSecretKey、OdnoklassnikiAppKey 属性。
- 设置重定向的URL方案:okOdnoklassnikiAppID,其中OdnoklassnikiAppID是Odnoklassniki应用程序ID
Vkontakte
- 在您的info.plist文件中设置VKontakteAppID属性
用法
活动控制器
// DO NOT forget to setup application IDs in info.plist. For more info see README.md
GPFacebookActivity *facebookActivity = [GPFacebookActivity new];
GPTwitterActivity *twitterActivity = [GPTwitterActivity new];
GPCopyActivity *copyActivity = [GPCopyActivity new];
GPMailActivity *mailActivity = [GPMailActivity new];
GPMessageActivity *messageActivity = [GPMessageActivity new];
GPOKActivity *okActivity = [GPOKActivity new];
GPVKActivity *vkActivity = [GPVKActivity new];
NSArray *activities = @[mailActivity, messageActivity, facebookActivity, twitterActivity,
vkActivity, okActivity, copyActivity];
GPActivityViewController *controller = [[GPActivityViewController alloc] initWithactivities:activities];
controller.userInfo = @{@"text":@"Message to pass to activities",
@"url":[NSURL URLWithString:@"https://github.com/gpinigin"]};
[controller presentFromBarButton:sender animated:YES];
应用程序回调
为了完成身份验证,您应该在应用程序代理中注册URL方案并添加应用程序回调
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
// For iOS 5.X only
if ([FBSession.activeSession handleOpenURL:url]) {
return YES;
}
if ([[OdnoklassnikiMgr sharedInstance] handleOpenURL:url]) {
return YES;
}
if ([[VkontakteMgr sharedInstance] handleOpenURL:url]) {
return YES;
}
return NO;
}
派生类注意事项
// Call it when activity is finished
- (void)activityFinished:(BOOL)completed;
// Should returns string that unique identifies your activity
- (NSString *)activityType;
// Override to implement your activity behavior
- (void)performActivity;
注意:iOS 5.0:如果您的控制器的自动旋转行为不匹配GPActivityViewController之一,则必须派生GPActivityViewController以重写自动旋转行为或以模式呈现控制器。
自定义活动
您还可以使用块方法创建自定义活动
GPActivity *myActivity = [customActivity:@"MACustomActivity" actionHandler:^(GPActivity *activity, NSDictionary *userInfo) {
// Your code here
// ...
// Activity is finished successfully
[activity activityFinished:YES];
}];
myActivity.image = [UIImage imageNamed:@"myCustom"];
myActivity.title = @"MyCustom";
您还可以指定预定义的activityInfo
NSURL *url = [NSURL URLWithString:@"google.com"];
activity.userInfo = @{@"text":@"My custom activity",
@"url":url};