我们如何在UIViewController类中使用uiactivity类方法 - (void)performActivity?

时间:2014-08-20 17:38:08

标签: ios objective-c share uiactivityviewcontroller uiactivity

我正在为iPhone制作文章阅读应用程序。我陷入了一些问题。我在社交分享方面遇到了问题。我尝试了几种方法。 第一种方法

我们正在使用Facebook sdk分享文章链接,标题和图片。理想情况下,当我们点击uiactivityviewcontroller中的Facebook活动项目时,我的Facebook sdk代码应该运行但我无法这样做。

第二种方法

我们尝试了uiactivityviewcontroller中的自定义活动项目,并成功制作了一个自定义图标,并对该类默认方法( - (void)performActivity)进行了操作,但我想在我的视图中使用此方法我们通过segue传递文章链接,标题和图像的控制器类。

这是我的代码:

           #import "ysAPActivityIcon.h"
           #import <Social/Social.h>
           #import <FacebookSDK/FacebookSDK.h>
           @implementation ysAPActivityIcon

            - (NSString *)activityType { return @"it.albertopasca.myApp"; }
            - (NSString *)activityTitle { return @"Open Maps"; }
             - (UIImage *) _activityImage { return [UIImage imageNamed:@"iPad_jobs.png"];           }
             - (BOOL) canPerformWithActivityItems:(NSArray *)activityItems { return YES; }
             - (void) prepareWithActivityItems:(NSArray *)activityItems { }
              - (UIViewController *) activityViewController { return nil; }
              - (void) performActivity {
                         }
          // my view controller class:
            #import "ysAPActivityProvider.h"
            #import "ysAPActivityIcon.h"
              #import "ysDetailViewController.h"
             @interface ysDetailViewController() <UIWebViewDelegate,UIActivityItemSource>
           - (void) performActivity {

           FBLinkShareParams *params = [[FBLinkShareParams alloc] init];
         params.link = [NSURL URLWithString:@"https://www.youtube.com/watch?v=pa8lsBNG31c"];
        //    // If the Facebook app is installed and we can present the share dialog
         if ([FBDialogs canPresentShareDialogWithParams:params]) {

          // Present share dialog
          [FBDialogs presentShareDialogWithLink:params.link
                               handler:^(FBAppCall *call, NSDictionary *results,    NSError *error) {
                                  if(error) {
                                      // An error occurred, we need to handle the error
                                       // See: https://developers.facebook.com/docs/ios/errors
                                      NSLog(@"Error publishing story: %@", error.description);
                                  } else {
                                      // Success
                                      NSLog(@"result %@", results);
                                  }
                              }];

// If the Facebook app is NOT installed and we can't present the share dialog
            } else {
       // FALLBACK: publish just a link using the Feed dialog

// Put together the dialog parameters
       NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                               @"YourStory", @"name",

                               nil];

// Show the feed dialog
           [FBWebDialogs presentFeedDialogModallyWithSession:nil
                                       parameters:params
                                          handler:^(FBWebDialogResult result, NSURL *resultURL, NSError *error) {
                                              if (error) {
                                                  // An error occurred, we need to handle the error
                                                  // See:  https://developers.facebook.com/docs/ios/errors
                                                  NSLog(@"Error publishing story: %@", error.description);
                                              } else {
                                                  if (result ==   FBWebDialogResultDialogNotCompleted) {
                                                      // User canceled.
                                                      NSLog(@"User cancelled.");
                                                  } else {
                                                      // Handle the publish feed callback
                                                      //   NSDictionary *urlParams = [self parseURLParams:[resultURL query]];

                                                      //  if (![urlParams valueForKey:@"post_id"]) {
                                                      // User canceled.
                                                      NSLog(@"User cancelled.");

                                                      //    } else {
                                                      // User clicked the Share button
                                                      //         NSString *result =      [NSString stringWithFormat: @"Posted story, id: %@", [urlParams valueForKey:@"post_id"]];
                                                      //        NSLog(@"result %@", result);
                                                  }
                                              }

                                          }];

           }



      }

1 个答案:

答案 0 :(得分:0)

在自定义UIActivity的.h文件中,创建标题,链接,图像所需的变量...在ViewController的实现文件中导入UIActivity的头文件,并在按钮的操作方法中创建一个类的实例。我们假设UIActivity头文件名为customAct:

customAct *act = [[customAct alloc] init];

然后使用它将数据添加到头文件中的变量:

act.titleString = @"Text you want to add"

然后在performActivity方法中使用这些变量。

但如果我理解得很好,你就试图与Facebook分享。 UIActivityController默认为您提供在Facebook,Twitter,邮件和消息上共享的功能。永远不要让facebook分享按钮出现你必须登录你的Facebook帐户的设置,同样的事情为twitter。 另一方面,UIActivtyController无法通过whatsapp,Instagram等分享...因为您必须进行自定义活动