我正在尝试将文章标题和文章 URL 发布到 twitter,然后将应用程序的名称附加到推文的末尾。所以像
“如何种植仙人掌(通过@appname)”附加网址
我无法弄清楚如何平衡标题和 URL 的长度以确保推文不超过 140 个字符。因此,如果 URL 真的很长,请剪掉一些文章标题,使其不超过 140 个字符。
查看Twitter 的指南,SLComposeViewController
他们说明了这一部分:
请注意,设置初始内容的方法以布尔值响应;这使您(开发人员)不必担心您正在初始化的推文正文中的当前字符数。如果该方法返回 YES,则有足够的空间来添加内容。如果该方法返回 NO,则您尝试添加的内容将导致推文长度超过 140 个字符。字符计数逻辑也会影响 t.co URL 换行所需的当前字符数。
(来自“代码示例”部分。)
鉴于此,我编写了以下代码来构建推文并平衡 URL 长度和文章长度:
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter]) {
SLComposeViewController *twitterViewController = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];
[twitterViewController addURL:[NSURL URLWithString:self.article.url]];
NSString *titleToShare = self.article.title;
while ([twitterViewController setInitialText:[NSString stringWithFormat:@"%@ (via @SyllableApp)", titleToShare]]) {
titleToShare = [titleToShare substringToIndex:titleToShare.length - 1];
}
[self presentViewController:twitterViewController animated:YES completion:nil];
}
它基本上添加了 URL,然后通过循环该setInitialText:
方法直到它返回来构造推文的其余部分,YES
每次返回时将标题的长度减少 1 NO
,以便更接近所需的长度。
但它永远不会返回YES!即使我知道它应该。我使用的一篇文章可能超过 140 个字符,因为标题长度为 105 个字符,URL 为 55,加上应用程序信用。所以理论上它应该能够缩短标题然后添加它,但它永远不会发生。
发生什么了?如何完成链接附件SLComposeViewController
?