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

SLComposeViewController отправляет оба изображения и URL-адреса ios9

То, что я пытаюсь сделать, и оно не работает, следующее: опубликуйте образ моего выбора, а также URL-адрес в facebook, используя встроенный facebook sharer, проблема в том, что он не работает для загрузки как, это либо изображение + текст, либо работает хорошо, либо url + текст и работает хорошо, но когда я совмещаю их текст + рисунок + url, он получает изображение с URL-адреса, а не мой загруженный рис. Какие-либо предложения? Я делаю это на iOS9

    UIImage *tableViewScreenshot = [tblFeed screenshotOfCellAtIndexPath:idx];

    SLComposeViewController *fbSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
    [fbSheet setInitialText:@"I need your vote"];
    [fbSheet addURL:[NSURL URLWithString:str]];
    [fbSheet addImage:tableViewScreenshot];
4b9b3361

Ответ 1

Итак, кажется, что на данный момент нет решения для этого, и мы должны найти обходное решение для него, возможно, сначала загрузить все изображение в URL-адрес, а затем использовать fb sdk, чтобы указать на изображение с этого URL-адреса + ссылку как автономный pic, похоже, не работает.

Ответ 2

Проблема в том, что Facebook изменил некоторые политики, и этим вы не можете иметь текст или изображение, представленные по умолчанию. Вот почему вы не видите текст и фотографию. Вот 2 сценария с установленным программным обеспечением Facebook, а другой - без приложения Facebook. Ниже приведен пример, когда приложение Facebook уже установлено на устройстве. введите описание изображения здесь

И это когда приложение Facebook не установлено на устройстве

введите описание изображения здесь

И это мой код:

 SLComposeViewController *controller = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];

[controller addURL:[NSURL URLWithString:@"https://www.google.com"]];
[controller addImage:[UIImage imageNamed:@"icon_circle"]];
[controller setInitialText:@"Bhavuk you're great!"];

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

Итак, если вы хотите поделиться всем, лучше используйте FB SDK.

Ответ 3

К сожалению, проблема остается даже на iOS 10. Простым решением является просто удаление URL-адреса, например:

SLComposeViewController *fbSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
[fbSheet setInitialText:@"I need your vote"];
[fbSheet addImage:tableViewScreenshot]; 

Ответ 4

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

Если изображение и текст, которые вы хотите отобразить в вашем SlComposeView, совпадают с информацией, которая существует на веб-сайте, который вы собираетесь разделить; вам вообще не нужно делать что-либо особенное на стороне iOS.

Если вы являетесь тем, кто также создал веб-страницу, на которой вы делитесь URL-адресом, если у вас есть соответствующие теги Open Graph META на странице, SLComposeView типа Facebook покажет изображение и текст, которые были установлены на веб-странице в пределах ваше приложение автоматически.

За дополнительной информацией о Facebook Open Graph Markup; см. https://developers.facebook.com/docs/sharing/webmasters/#markup

Ответ 5

У меня был обмен файлами facebook в моем приложении ios, когда fb не устанавливался. и я установил fb для использования последней api (4.7.x), и теперь совместное использование вообще не работает. Я проверяю, что у меня есть разрешение publish_actions (которое я делаю до вызова этого метода, у меня есть "явно разрешенный", проверенный в открытых настройках графика, типах действий, возможностях. Я проверяю содержимое (я не получаю сообщение об ошибке) и имею делегат, ни один из его методов не вызван.

-(void)shareWithFacebook:(NSString *)message
{
    if ([[FBSDKAccessToken currentAccessToken] hasGranted:@"publish_actions"])
    {
        NIDINFO(@"Facebook sharing has publish_actions permission");
    }
    else
    {
        FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init];
        [loginManager logInWithPublishPermissions:@[@"publish_actions"]
            handler:^(FBSDKLoginManagerLoginResult *result, NSError *error)
            {
                NIDERROR(@"Facebook sharing getting publish_actions permission failed: %@", error);
            }
        ];   
    }

    NSMutableDictionary *properties = [NSMutableDictionary dictionaryWithDictionary: @{
                                                                                   @"og:type": @"article",
                                                                                   @"og:title": @"Bloc",
                                                                                   @"og:description": message,
                                                                                   @"og:url": @"http://getonbloc.com/download"
                                                                                       }];




    FBSDKShareOpenGraphObject *object = [FBSDKShareOpenGraphObject objectWithProperties:properties];

        // Create the action
    FBSDKShareOpenGraphAction *action = [FBSDKShareOpenGraphAction actionWithType:@"mynamespace:Share" object:object key:@"article"];
    [action setString:@"true" forKey:@"fb:explicitly_shared"];

        // Create the content
    FBSDKShareOpenGraphContent *content = [[FBSDKShareOpenGraphContent alloc] init];
    content.action = action;
    content.previewPropertyName = @"article";

            // Share the content
    FBSDKShareAPI *shareAPI = [[FBSDKShareAPI alloc] init];
    shareAPI.shareContent = content;
    shareAPI.delegate = self;

    NSError *error;
    if([shareAPI validateWithError:&error] == NO)
    {
        NIDERROR(@"Facebook sharing content failed: %@", error);
    }

    [shareAPI share];
}

 #pragma mark - FBSDKSharingDelegate

- (void) sharer:(id<FBSDKSharing>)sharer didCompleteWithResults:(NSDictionary *)results
{
    NIDINFO(@"Facebook sharing completed: %@", results);
}

- (void) sharer:(id<FBSDKSharing>)sharer didFailWithError:(NSError *)error
{
    NIDERROR(@"Facebook sharing failed: %@", error);
}

- (void) sharerDidCancel:(id<FBSDKSharing>)sharer
{
    NIDINFO(@"Facebook sharing cancelled.");
}