Подтвердить что ты не робот

Совместное использование с интеграцией Facebook iOS 6.0: "Отправлено через мое имя приложения"?

Я только что интегрировал facebook в свое приложение через ios 6, но у меня проблема при публикации на стене. Он просто говорит "сообщение через приложение ios. Я хочу, чтобы он сказал ", отправленный через имя приложения. Я сделал идентификатор приложения с facebook, и у меня есть номер приложения, который они назначили, но я не уверен, как интегрировать его с интеграцией facebook.

Ниже мой код. Если бы кто-нибудь мог помочь, это было бы оценено. Спасибо!

{
NSString *message;
message= [[NSString alloc] initWithFormat:@"I've earned %@ points", [self retrieveScore]];

if([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {

    SLComposeViewController *controller = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
    [controller setInitialText:message];
    [controller addURL:[NSURL URLWithString:@"http://mysite"]];
    [self presentViewController:controller animated:YES completion:Nil];
    [message release];

    SLComposeViewControllerCompletionHandler myBlock = ^(SLComposeViewControllerResult result){
        NSString *output= nil;
        switch (result) {
            case SLComposeViewControllerResultCancelled:
                output= @"Action Cancelled";
                NSLog (@"cancelled");
                break;
            case SLComposeViewControllerResultDone:
                output= @"Post Succesfull";
                NSLog (@"success");
                break;
            default:
                break;
        }
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Facebook" message:output delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];
        [alert show];
        [alert release];
        [controller dismissViewControllerAnimated:YES completion:Nil];
    };
    controller.completionHandler =myBlock;
      }
4b9b3361

Ответ 1

ОБНОВЛЕНИЕ - это можно сделать

Итак, приложение Digg для iOS может делиться с Facebook без использования структуры учетных записей для получения прав пользователя... Они используют UIActivityViewController и имеют сообщение появляются как "через Digg", я связался с кем-то из Digg, и они сказали мне, что это ручной процесс. У вас должно быть ваше приложение iOS, опубликованное в Apple App Store, а также ваше приложение Facebook принято и опубликовано в Facebook App Store. Затем Facebook может вручную обработать связывание двух таким образом.

Очевидным недостатком этого является то, что UIActivityViewController означает, что вы можете поделиться своим приложением без какой-либо интеграции с Facebook, нет необходимости в приложении для Facebook... Но чтобы получить "через ваше имя приложения", вам понадобится Facebook приложение, которое Facebook одобрит в своем собственном магазине приложений, как только все будет вживую, вам нужно будет связаться с разработчиками, чтобы связать все это.

Обратите внимание, что остальная часть моего ответа (мой предыдущий ответ) верна, решение - это ручной процесс, который Facebook может сделать для вас, ваш код iOS не должен быть затронут.


Предыдущий ответ и обходной путь

Встроенная интеграция с Facebook, на самом деле, представляет собой контроллер представления композитора. Это достигается с помощью класса SLComposeViewController с типом сервиса SLServiceTypeFacebook.

Этот класс предоставляет только одностороннюю связь, и, как вы заметили, вы подтверждаете наличие каких-либо стеновых сообщений, нажав кнопку "Опубликовать". Этот контроллер представления принадлежит системе iOS, а не вашему приложению. И, взаимодействуя с этим составителем контроллера, вы фактически обходите свое приложение.

Пользователям нравится делать это, потому что это дает им безопасность.

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

Чтобы сообщение, появившееся из вашего приложения, появилось на Facebook с помощью "через xxxx", а не "через iOS", вам необходимо взаимодействовать с Facebook через класс SLRequest. Для этого вы также должны взаимодействовать с Account.framework в дополнение к Social.framework.

Он напоминает предыдущий ранее используемый IOS SDK Facebook (и все еще может его использовать) с точки зрения его настройки, вы получаете ссылку на хранилище учетных записей устройства, вы запрашиваете учетные записи Facebook и отправляете свой идентификатор приложения Facebook и массив разрешений.

Если предоставлено, вы можете затем взаимодействовать с API-интерфейсом Facebook через класс SLRequest. Отправляя на свою стену в этой усадьбе, вы получите желаемый "через xxx".

Чтобы использовать это, ознакомьтесь с документацией для SLRequest.

Обратите внимание, что в этом случае вы несете ответственность за создание своего собственного представления.

Вы можете, конечно, вдохновить себя на собственный пользовательский интерфейс, а также посмотреть приложение iPhoto iOS, попробовать поделиться с Facebook с этим приложением, вы заметите, что он запрашивает разрешение на взаимодействие с вашей учетной записью Facebook (что-то, что не возникает при использовании SLComposeViewController), тогда он представляет что-то очень близкое к сообщению SLComposeViewController для публикации в Facebook.

Но если вы посмотрите ближе, вы заметите, что это не то же самое. Это также относится к Twitter и их родному приложению против собственной интеграции. У них есть своя собственная презентация, очень интересно отметить, что они используют встроенную интеграцию iOS (рамки Apple). Мы знаем это, потому что, перейдя в Настройки > Конфиденциальность > Twitter, вы можете видеть, что приложение Twitter - это авторизованное приложение, использующее учетные записи Twitter на устройстве.

То же самое касается Facebook.

Если вы не получили разрешение, у вас нет способа опубликовать ваше приложение - aka "через myApp".

Извините, что подвел вас, я также искал способ интегрировать ACAccount в SLComposeViewController, но не смог найти способ. Какой позор... потому что собственный пользовательский интерфейс сладок.

Ответ 2

В итоге я использовал пользовательскую фреймворк Facebook с новым SDK для Windows 3.1. Facebook Compose View

Оригинал находится здесь: facebook compose view. Я только что исправил несколько незначительных предупреждений и обновился с помощью нового FB SDK 3.1.

Использование:

DEFacebookComposeViewControllerCompletionHandler __block completionHandler = ^(DEFacebookComposeViewControllerResult result) {
    [self dismissViewControllerAnimated:YES completion:nil];
    switch (result) {
        case DEFacebookComposeViewControllerResultCancelled:
            NSLog(@"Facebook Result: Cancelled");
            break;
        case DEFacebookComposeViewControllerResultDone:
            NSLog(@"Facebook Result: Sent");
            break;
    }
};
DEFacebookComposeViewController * compose = [[DEFacebookComposeViewController alloc] init];
[compose setInitialText:self.shareText];
[compose addImage:self.shareImage];
[compose addURL:self.shareURL];
[compose setCompletionHandler:completionHandler];
[self presentViewController:compose animated:YES completion:^{}];

Настройка:

  • Откройте проект и выполните чистую сборку.
  • Перейдите в папку $PROJECT_FOLDER\build\Debug-iphonesimulator и перетащите оба FBComposeView.framework и FBComposeView.bundle в свой проект.

Примечание. Обязательно используйте кнопки Debug-iphonesimulator. Это жирная бинарная. enter image description here

Ответ 3

Мы решили аналогичную проблему с интеграцией iOS 5 Twitter, и результат:

Когда вы отправляете в Twitter с помощью сборки dev или через симулятор, он почти всегда будет отображаться в Twitter как "через iOS". Как только ваше приложение будет одобрено, и вы опубликуете его из сборки AppStore, оно должно появиться в виде сообщения "YourAppName on iOS" с ссылкой на страницу приложения appstore.

исходный источник (обсуждение проблемы с ShareKit)

Я полагаю, что Apple делает то же самое с Facebook и другими социальными службами.

EDIT: к сожалению, это только действительно работало с Twitter.framework. Я думаю, что лучшее объяснение и ответ - это Даниэль выше. Может быть, настало время радара, так что Apple знает, чего мы хотим.

Примеры использования SLRequest с Facebook находятся в этом вопросе SO

EDIT2: подал радар ID ошибки: # 12980058. Надеюсь, они прислушиваются...