GPActivityViewController 3.1.0

GPActivityViewController 3.1.0

测试已测试
语言语言 Obj-CObjective C
许可 MIT
发布上次发布2018年11月

Gleb Pinigin 维护。



 
依赖项
AFNetworking~> 3.0
REComposeViewController~> 2.0.3
 

  • Gleb Pinigin

GPActivityViewController

UIActivityViewController 的替代品

iOS7 and later

支持的活动

  • Facebook
  • Twitter
  • 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文件中设置 OdnoklassnikiAppIDOdnoklassnikiSecretKeyOdnoklassnikiAppKey 属性。
  • 设置重定向的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};

鸣谢

部分基于REActivityViewController