Вопрос по ios6, xcode, frameworks, facebook, posting – Как опубликовать в Facebook на iOS 6 в Objective-C с помощью класса ACAccountStore

24

Я хочу знать, как опубликовать статусное сообщение в Facebook на iOS 6, используя новые фреймворки на Xcode 4.5. Спасибо! :)

Нет, я имел в виду использование новых фреймворков на iOS 6. jaytrixz
Здесь есть хороший набор учебников:developers.facebook.com/docs/getting-started/… Preet Sangha
Вы можете использовать социальные рамки для более подробной информации посетитеkmithi.blogspot.in/2012/10/… mithilesh

Ваш Ответ

5   ответов
1

когда я просто хочу получать оповещение в случае, если сообщение было успешным, и ничего, когда пользователь отменил сообщение?

И, к сожалению, это не работает должным образом для Твиттера ... Он больше не отклоняет TweetSheet. Вот мой код:

 if(NSClassFromString(@"SLComposeViewController") != nil)
 {

        mySLComposerSheet = [[SLComposeViewController alloc] init]; //initiate the Social Controller
        mySLComposerSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter]; //Tell him with what social plattform to use it, e.g. facebook or twitter
        [mySLComposerSheet setInitialText:[NSString stringWithFormat:story.title,mySLComposerSheet.serviceType]]; //the message you want to post
        [mySLComposerSheet addURL:[NSURL URLWithString:story.link]];
        //for more instance methodes, go here:https://developer.apple.com/library/ios/#documentation/NetworkingInternet/Reference/SLComposeViewController_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40012205
        [mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) {
            NSString *output;
            switch (result) {
                case SLComposeViewControllerResultCancelled:
                    output = NSLocalizedStringFromTable(@"As it seems you didn't want to post to Twitter", @"ATLocalizable", @"");
                    break;
                case SLComposeViewControllerResultDone:
                    output = NSLocalizedStringFromTable(@"You successfully posted to Twitter", @"ATLocalizable", @"");
                    break;
                default:
                    break;
            } //check if everything worked properly. Give out a message on the state.
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Twitter" message:output delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];
            [alert show];
        }];
        [self presentViewController:mySLComposerSheet animated:YES completion:nil];
0

как я на самом деле использую его в своем приложении. Сглаживает и позволяет контроллеру выполнять тяжелую работу.

- (IBAction)postToFacebook:(id)sender {
  if(![SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook])  {
        NSLog(@"log output of your choice here");
  }
  // Facebook may not be available but the SLComposeViewController will handle the error for us.
  self.mySLComposerSheet = [[SLComposeViewController alloc] init];
  self.mySLComposerSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
  [self.mySLComposerSheet setInitialText:[NSString stringWithFormat:@"I found this Thing, check it out at SomeWhere:\n %@ \n", [self someURLString]]];
  [self.mySLComposerSheet addImage:self.photos.firstObject]; //an image you could post

  [self presentViewController:self.mySLComposerSheet animated:YES completion:nil];

  [self.mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) {
        NSString *output;
        switch (result) {
              case SLComposeViewControllerResultCancelled:
                    output = @"Action Cancelled";
                    break;
              case SLComposeViewControllerResultDone:
                    output = @"Post Successfull";
                    break;
              default:
                    break;
        }
        if (![output isEqualToString:@"Action Cancelled"]) {
              // Only alert if the post was a success. Or not! Up to you. 
              UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Facebook" message:output delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];
              [alert show];
        }
  }];
}
0

ребята, так что я подправил оригинальный пост, работает для iOS 6/7. Измените ServiceType, заголовок оповещения и сообщение для Facebook. Наслаждайтесь!

- (IBAction)tweetMessage:(id)sender {


  if(![SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter]) //check if Facebook Account is linked
  {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Unable to Tweet!" message:@"Please login to Twitter in your device settings." delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];
        [alert show];
        return;
  }
  //self.mySLComposerSheet = [[SLComposeViewController alloc] init]; //initiate the Social Controller
  self.mySLComposerSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTy,peTwitter];
  [self.mySLComposerSheet setInitialText:[NSString stringWithFormat:@"I found this Thing, check it out at this Place:\n %@ \n", [self someplace]]];
  [self.mySLComposerSheet addImage:self.photos.firstObject];

  [self presentViewController:self.mySLComposerSheet animated:YES completion:nil];
  //}

  [self.mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) {
        NSString *output;
        switch (result) {
              case SLComposeViewControllerResultCancelled:
                    output = @"Action Cancelled";
                    break;
              case SLComposeViewControllerResultDone:
                    output = @"Post Successfull";
                    break;
              default:
                    break;
        } //check if everything worked properly. Give out a message on the state.
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Twitter" message:output delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];
        [alert show];
  }];
}
75

k.

Сначала нужно импортировать фреймворки: социальные сети и аккаунты.

#import <Social/Social.h>
#import <Accounts/Accounts.h>

В вашем .h файле:

SLComposeViewController *mySLComposerSheet;

Этот код должен быть включен в ваши действия в вашем файле .m:

    if([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) //check if Facebook Account is linked
    {
      mySLComposerSheet = [[SLComposeViewController alloc] init]; //initiate the Social Controller
        mySLComposerSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; //Tell him with what social platform to use it, e.g. facebook or twitter
                [mySLComposerSheet setInitialText:[NSString stringWithFormat:@"Test",mySLComposerSheet.serviceType]]; //the message you want to post
       [mySLComposerSheet addImage:yourimage]; //an image you could post
        //for more instance methods, go here: https://developer.apple.com/documentation/social/slcomposeviewcontroller#//apple_ref/doc/uid/TP40012205
        [self presentViewController:mySLComposerSheet animated:YES completion:nil];
    }
    [mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) {
        NSString *output;
        switch (result) {
            case SLComposeViewControllerResultCancelled:
                output = @"Action Cancelled";
                break;
            case SLComposeViewControllerResultDone:
                output = @"Post Successful";
                break;
            default:
                break;
        } //check if everything worked properly. Give out a message on the state.
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Facebook" message:output delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];
        [alert show];
    }];
@Blade можем ли мы изменить "поделился ссылкой через iOS" Чтобы "поделился ссылкой через MyAppName" ?
@ Blade Thans. но я хочу поделиться сообщением без листа действий, например & quot; TWRequest & quot; так что такое процесс в фейсбуке?
@Blade Спасибо, я только что использовал этот код. Одно редактирование: Вы действительно хотите назначить mySLComposerSheet дважды (один раз с помощью alloc / init, а затем с помощью 'composeViewControllerForServiceType: & apos;)? Другими словами, код также работает без alloc / init, вы просто немедленно переназначаете его, если я что-то не упустил.
Кроме того: если вы не включили «если» в начале, и пользователь не входит в FB в своих настройках, iOS запускает значок, который спрашивает их, хотят ли они войти в FB - избегает отсутствия ответа, если они не вошли в систему.
@ Лезвие Грэда Грэта. Это работает хорошо, но у меня есть один запрос, когда я отправляю одно и то же сообщение, а не два всплывающих окна. 1. Сообщение успешно завершено и 2. Сообщение не может быть отправлено из-за сбоя подключения к Facebook. я хочу только одно всплывающее окно, чтобы пользователь получил идею. Из-за этого два всплывающих пользователя запутались, что сообщение успешно или нет. Пожалуйста, предложите мне, если у вас есть идеи.
1
- (IBAction)btn_facebook:(id)sender {

    SLComposeViewController *facebookcomposer =
        [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
    [facebookcomposer setInitialText:@"This is just a test"];
    [facebookcomposer addURL:[NSURL URLWithString:@"http://www.google.com"]];
    [facebookcomposer addImage:[UIImage imageNamed:@"images.jpg"]];

    [self presentViewController:facebookcomposer animated:YES completion:nil];

    [facebookcomposer setCompletionHandler:^(SLComposeViewControllerResult result)
    {
        switch (result)
        {
            case SLComposeViewControllerResultDone:
                NSLog(@"done");
                break;
            case SLComposeViewControllerResultCancelled:
                NSLog(@"cancelled");
                break;

            default:
            break;
        }

    }];

}

- (IBAction)btn_twitter:(id)sender {

    if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter]) {
        SLComposeViewController *twitter =
            [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];

        [twitter setInitialText:@"this is just a test"];
        [twitter addURL:[NSURL URLWithString:@"http://www.google.com"]];
        [twitter addImage:[UIImage imageNamed:@"images.jpg"]];
        [self presentViewController:twitter animated:YES completion:nil];
    } else {
        NSLog(@"it is not configured");
    }
}

Похожие вопросы