О "SLComposeViewController" в бета-версии iOS 11
В моем проекте я всегда использую SLComposeViewController
для обмена контентом со сторонними приложениями, но теперь, когда я обновляю свой iPhone до бета-версии iOS 11, это больше не работает.
SLComposeViewControllerCompletionHandler
всегда SLComposeViewControllerResultCancelled
.
Почему это?
Ответы
Ответ 1
У меня возникли проблемы с SLComposer в iOS 11. Но я просто удалил строку, которая проверяет и, по-видимому, собственный SDK делает validacoes для меня внутренне.
Удалить эту строку для любого SLServiceType
:
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {
Итак, разработайте свою логику. В моем случае:
SLComposeViewController *mySLComposerSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
[mySLComposerSheet setInitialText:@"#myInitialTextIsHere"];
[mySLComposerSheet addURL:[NSURL URLWithString:strURL]];
[mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) {
switch (result) {
case SLComposeViewControllerResultCancelled:
NSLog(@"Post Canceled");
break;
case SLComposeViewControllerResultDone:
NSLog(@"Post Sucessful");
break;
default:
break;
}
}];
[self presentViewController:mySLComposerSheet animated:YES completion:nil];
Надеюсь, я помог!
Ответ 2
iOS 11 удалил доступ к сторонним учетным записям (например, Facebook и Twitter) через приложение "Настройки". Im в настоящее время борется с тем же.
Теперь вы должны интегрировать функциональность с SDK от третьего лица. В Twitter есть страница миграции здесь о шагах, которые нужно предпринять: -
https://dev.twitter.com/twitterkit/ios/migrate-social-framework
Я еще не нашел конкретных инструкций о том, как переносить другие социальные сети, но можно с уверенностью сказать, что это потребует их SDK сторонних разработчиков.
Нет более легкого совместного использования в социальных сетях: - (
Ответ 3
Для iOS 11 эта строка:
([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook])
всегда возвращает NO
Я заменил его на проверку, если у пользователя установлено приложение Facebook:
static NSString *const canOpenFacebookURL = @"fbauth2";
+ добавив его к LSApplicationQueriesSchemes
в plist
-(BOOL)isFacebookAppInstalled {
NSURLComponents *components = [[NSURLComponents alloc] init];
components.scheme = canOpenFacebookURL;
components.path = @"/";
return [[UIApplication sharedApplication]
canOpenURL:components.URL];
}
А затем просто позвоните SLComposeViewController *composeVC = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
как обычно, то же, что и описанный Матхеем Домингосом. Но с этой проверкой, по крайней мере, вы знаете, что у пользователя установлено приложение facebook.