Социальная структура iOS 6 не заходит в настройки или нет предупреждений

Я пытаюсь внедрить новую социальную структуру в iOS6, и она работает, за исключением двух странных проблем. Если я включил интересующие меня службы (например, FaceBook), то все работает нормально. Однако, если учетные записи удалены с панели настроек (скажем, FaceBook, чтобы быть последовательным), тогда я получаю разные и разочаровывающие поведения в симуляторе и на устройстве.

Вот соответствующий код в моем контроллере представления:

//Method for FaceBook

- (IBAction)doFacebook:(id)sender{
//check to see if facebook account exists
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {

    // Create the view controller defined in the .h file

    fb=[SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];

    // make the default string
    NSString *FBString= [NSString
                         stringWithFormat:@"%@\r via #GibberishGenerator", gibText.text];
    [fb setInitialText:FBString];
    // show the controller
    [self presentViewController:fb animated:YES completion:nil];

    }
}

И вот странное поведение при запуске вышеуказанного метода:

В симуляторе (версия 6.0 (358.4) я получаю диалоговое окно, информирующее меня о том, что я не настроил учетные записи FaceBook с помощью кнопок «Настройки» и «Отмена». Нажатие «Настройки» просто закрывает диалоговое окно. , но не приводит меня к панели настроек.

На моем iPhone 4s с версией 6.01 нажатие кнопки, запускающей этот метод, не приводит ни к чему. Другими словами, я не получаю никакого диалога, сообщающего мне, что я должен настроить учетную запись FaceBook.

Заранее спасибо за вашу помощь.


ОК... Вот исправление:

Вот моя новая реализация, основанная на полезном комментарии user1734802.

//Method for FaceBook

- (IBAction)doFacebook:(id)sender{

    // Create the view controller defined in the .h file

    fb=[SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];

    // make the default string
    NSString *FBString= [NSString
                         stringWithFormat:@"%@\r via #GibberishGenerator", gibText.text];
    [fb setInitialText:FBString];
    // show the controller
    [self presentViewController:fb animated:YES completion:nil];

      }

В какой-то момент я ожидаю

 [SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook])

на самом деле работать правильно (запуск автоматического диалогового окна и переход к настройкам), поэтому я просто прокомментировал это в своем коде.


person james Burns    schedule 03.01.2013    source источник
comment
Мне пахнет жуком. Не работает на устройстве для любого SLServiceType и работает только в симуляторе для Twitter и Weibo.   -  person Mick MacCallum    schedule 06.01.2013
comment
Я тоже начинаю верить, что это баг. Интересно, как лучше поступить? Появится мой собственный диалог, предлагающий людям настроить учетные записи (поскольку я, по-видимому, не могу отправить их в настройки)?   -  person james Burns    schedule 06.01.2013
comment
Это, вероятно, лучший способ, и кроме этого, если вы в конечном итоге не сможете получить этот рабочий файл, отчет об ошибке с Apple по адресу bugreporter.apple.com   -  person Mick MacCallum    schedule 06.01.2013


Ответы (1)


У меня была такая же проблема, я исправил ее, удалив оператор If:

if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook])

Затем представление будет отображаться, хотя в настройках не настроена учетная запись Facebook/Twitter. И появился alertView «Нет учетных записей Facebook/Twitter»! И я смог нажать кнопку «Настройки» в предупреждении, и оно направило меня к настройкам (настроить учетную запись Facebook/Twitter в настройках).

Это код, который я использовал, и он отлично работает для меня:

- (IBAction)bTwitter:(id)sender {

mySLComposerSheet = [[SLComposeViewController alloc] init];

mySLComposerSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];

[mySLComposerSheet setInitialText:@""];

[mySLComposerSheet addImage:[UIImage imageNamed:@""]];

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

}
person Peter    schedule 09.01.2013
comment
Это звучит нелогично, но, черт возьми, я попробую и вернусь сюда, чтобы подтвердить. Спасибо за отзыв. - person james Burns; 10.01.2013
comment
Ага. Это сработало и для меня. Странный. Я добавлю это к своим выводам выше. - person james Burns; 10.01.2013
comment
Это идеально работает для вас как на симуляторе, так и на устройстве, как для Twitter, так и для Facebook? В симуляторе кнопка настроек, кажется, ничего не делает для меня при публикации в Facebook без настроенной учетной записи. Однако Twitter работает нормально, кнопка настроек направляет пользователя на экран настроек. - person David Omid; 11.01.2013
comment
Это работает для меня, и, очевидно, для него тоже! Поэтому я не вижу проблемы, с которой вы столкнулись. - person Peter; 11.01.2013
comment
Итак, когда вы запускаете это на симуляторе без настроенной учетной записи Facebook, и появляется диалоговое окно предупреждения с кнопкой настроек, вы можете нажать кнопку настроек и перейти на страницу настроек Facebook? В моем симуляторе этого нет, только для Twitter. Является ли код, который вы разместили выше, точным кодом, который вы используете? - person David Omid; 11.01.2013
comment
Он работает идеально и точно так же для меня как на Facebook, так и на Twitter. - person Peter; 12.01.2013
comment
Единственная проблема, которую я обнаружил, заключается в том, что если вы нажмете кнопку «Домой», предупреждение об отсутствии учетной записи facebook будет постоянным, и я не знаю, как его отклонить. - person Will Larche; 21.05.2013
comment
Привет, ребята, это не работает в IOS 7. Как я могу исправить эту проблему в IOS 7? - person sabir; 02.12.2013
comment
Я не понимаю, почему это так, кто-нибудь знает, что случилось с методом isAvailableForServiceType:? это устарело? - person Jeremy; 29.01.2014