Поделиться скриншотом на Facebook

Я использую следующий код, чтобы сделать снимок экрана на своем iPhone и сохранить его в фотоальбом. Что бы я хотел, так это кнопку «Поделиться», чтобы автоматически отправлять этот снимок экрана и на Facebook. Есть у кого идеи как реализовать?

- (UIImage*)captureView:(UIView *)view
{
CGRect rect = [[UIScreen mainScreen] bounds];
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
[view.layer renderInContext:context];
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return img;
}

- (void)saveScreenshotToPhotosAlbum:(UIView *)view
{
UIImageWriteToSavedPhotosAlbum([self captureView:self.view], nil, nil, nil);
}

- (void)viewDidLoad
{
[super viewDidLoad];
[self setUpData];

CGRect frame = self.view.bounds;
frame.size.height -= 90;

self.tableView = [[UITableView alloc] initWithFrame:frame style:UITableViewStylePlain];
[self.tableView setBackgroundColor:[UIColor clearColor]];
[self.tableView setDataSource:self];
[self.tableView setDelegate:self];

[self.view addSubview:self.tableView];

UIBarButtonItem *shareBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(saveScreenshotToPhotosAlbum:)];
[self.navigationItem setRightBarButtonItem:shareBtn];

}

person Steve    schedule 26.04.2013    source источник


Ответы (1)


Что ж, вы можете использовать встроенную в iOS6 интеграцию с Facebook. Включите фреймворк Social в Build Phases. Код должен выглядеть примерно так:

if([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]){
    mySLComposerSheet = [[SLComposeViewController alloc] init];
    mySLComposerSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
    [mySLComposerSheet setInitialText:@"Some Text"];
    [mySLComposerSheet addImage:[self captureView:self.view]];
    [self presentViewController:mySLComposerSheet animated:YES completion:nil];
}

*Обратите внимание, что это не будет «автоматически» делиться снимком экрана, но он прикрепит его к листу компоновки Facebook, и пользователь может опубликовать его, если он / она хочет. Чтобы сделать это автоматически, вам нужно будет сделать более глубокую интеграцию с Facebook, и пользователь должен разрешить вашему приложению размещать сообщения на своей стене. Это снова должно быть сделано с фреймворком Social или ShareKit, если проект Deployment target ниже iOS 6.0.

person Nikola Kirev    schedule 26.04.2013
comment
Хорошо, спасибо, как мне превратить это в кнопку на панели навигации? - person Steve; 26.04.2013
comment
Просто добавьте этот код в свой метод saveScreenshotToPhotosAlbum:, и он должен работать. - person Nikola Kirev; 26.04.2013
comment
Я добавил социальную структуру и импорт. Теперь я использую необъявленный идентификатор mySLComposerSheet. - person Steve; 26.04.2013
comment
Просто нужно исправить вышеперечисленное, в противном случае выглядит великолепно, очень полезная функция, которую можно использовать в любом приложении и делиться им. - person Steve; 26.04.2013
comment
объявленный в файле h, исправляет это, и он работает как сон! Большое вам спасибо! SLComposeViewController *mySLComposerSheet; - person Steve; 26.04.2013
comment
Ах, да.. Забыли о собственности, которую нужно задекларировать. Вы можете реорганизовать его, чтобы не нуждаться в свойстве, но в текущей реализации оно необходимо. Я рад, что помог тебе. - person Nikola Kirev; 27.04.2013