使用SLComposeViewController
时,如果图片和网址都存在,我会发现在发布到Facebook时的好奇行为。具体来说,如果您同时拥有图片和网址,则在SLComposeViewController
的视图中,如果我执行以下操作,则会在initialText
之后立即显示在Facebook帖子正文中:
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才会显示在帖子正文中。当我使用FBNativeDialogs
时,我会看到相同的模式。
有没有办法用SLComposeViewController
来阻止这种行为,这样我就可以将图像和URL连接到Facebook帖子而不会将用户暴露给网站冗长,丑陋的URL?很明显,我可以使用任何非SLComposeViewController
解决方案(例如,设计我自己的用户界面来撰写Facebook帖子,使用Facebook已弃用的Feed Dialog等)。只是想知道我是否忽略了一些明显的SLComposeViewController
解决方案。
答案 0 :(得分:10)
最后,我放弃了SLComposeViewController
(以及FBNativeDialogs
)。它们呈现出一种很好的,整合的感觉,但鉴于我的帖子总是同时包含照片和URL,这实际上是行不通的。最重要的是,帖子没有正确归因于我的应用程序。
所以,最后,我编写了自己的用户界面,并按照here概述使用Facebook SDK 3.1 FBRequestConnection
。我认为我们都必须制作自己的用户界面,因为本机用户界面存在缺陷,但实际情况就是如此。
答案 1 :(得分:6)
新的对话框似乎是围绕您设计的,将大部分共享数据作为标签提供给所提供链接指向的网站。像这样:
名称:
<title>TITLE</title>
说明
<meta name="description" content="DESCRIPTION">
图像:
<meta property="og:image" content="IMAGE_URL">
应用ID:
<meta property="fb:app_id" content="APP_ID">
这样您只需提供初始文本和URL。您可以查看官方Youtube应用程序如何以Facebook分享为例。
答案 2 :(得分:-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];