10

使用SLComposeViewController,如果图像和 URL 都存在,我在向 Facebook 发帖时会注意到奇怪的行为。具体来说,如果您同时拥有图像和 URL,则 URL 将出现在 Facebook 帖子的正文中SLComposeViewController,紧跟在initialText我执行以下操作之后:

SLComposeViewController *controller = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];

NSString *text = @"This is a test Facebook post with SLComposeViewController.";
NSURL *url = [NSURL URLWithString:@"http://http://stackoverflow.com/questions/12503287/tutorial-for-slcomposeviewcontroller-sharing"];
UIImage *image = ...;

[controller setInitialText:text];
[controller addURL:url];
[controller addImage:image];

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

这显然很麻烦,因为如果 URL 很长,初始文本会被推离视图的可见部分,SLComposeViewController而我只能看到 URL 的后半部分:

在此处输入图像描述

如果我重复这个过程,这次不将图像添加到帖子中,URL 的文本根本不会方便地显示在正文中(即使它在网上正确显示)。

在此处输入图像描述

底线,只有当有图像URL 时,URL 才会显示在帖子的正文中。当我使用FBNativeDialogs.

有什么方法可以阻止这种行为SLComposeViewController,这样我就可以将图像和 URL 都连接到 Facebook 帖子,而不会让用户看到网站长而丑陋的 URL?显然,我可以使用任何非SLComposeViewController解决方案(例如,设计我自己的 UI 来撰写 Facebook 帖子,使用 Facebook 已弃用的Feed Dialog等)。只是想知道我是否忽略了一些明显SLComposeViewController的解决方案。

4

3 回答 3

10

最后,我放弃了SLComposeViewController(以及FBNativeDialogs)。它们呈现出一种很好的综合感觉,但鉴于我的帖子总是包含照片和 URL,这真的行不通。最重要的是,这些帖子没有被正确地归为来自我的应用程序。

因此,最后,我编写了自己的用户界面并使用此处FBRequestConnection概述的 Facebook SDK 3.1 。我认为我们都必须制作自己的 UI 有点愚蠢,因为原生 UI 的弱点,但事实就是如此。

于 2012-10-14T07:08:08.143 回答
6

新对话框似乎是围绕您设计的,在提供的链接指向的网站上提供大部分共享数据作为标签。像这样:

标题:

<title>TITLE</title>

描述:

<meta name="description" content="DESCRIPTION">

图片:

<meta property="og:image" content="IMAGE_URL">

应用编号:

<meta property="fb:app_id" content="APP_ID">

这样您只需要提供初始文本和 URL。您可以查看官方的 Youtube 应用程序如何以 Facebook 共享为例。

于 2013-03-15T10:06:03.340 回答
-5
TWTweetComposeViewController *twitter = [[TWTweetComposeViewController alloc] init];
NSString *format = @"“%@” %@ /via @DesignSceneApp";
NSString *message = [NSString stringWithFormat:format, title, url]
NSUInteger idx = title.length;
while (![twitter setInitialText:message]) {
    idx -= 5;
    if (idx > 5) {
        message = [NSString stringWithFormat:format,
            [NSString stringWithFormat:@"%@…", [title substringToIndex:idx]],
            url
        ];
    } else {
        // Give up on the title.
        message = [NSString stringWithFormat:@"%@ /via @DesignSceneApp", url];
        [twitter setInitialText:message];
        break;
    }
}

[self presentViewController:twitter animated:YES completion:nil];
于 2012-11-28T11:03:08.710 回答