我已经能够在iOS上发布数百次推文了,但是我已经发布了一条推文,而我却无法推文。这条推文只有130个字符,但推特回应声称它超过140个字符。所以Twitter不会发布它。
相关代码:
- (void)tweet:(NSString *)message
{
SLRequest* request = [SLRequest
requestForServiceType:SLServiceTypeTwitter
requestMethod:SLRequestMethodPOST
URL:[NSURL URLWithString:[NSString stringWithFormat:
@"%@statuses/update.json",
API_BASE_URL
]]
parameters:@{
@"status": message
}
];
request.account = self.context.account;
[request performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *eror) {
if (responseData != nil) {
NSLog(@"%@", [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]);
}
];
}
控制台打印输出:
(lldb) po message
@juandoming Dallas teachers improved student performance by 20% w/mobile video messaging. Would this be useful to you? Ccccccc.com
(lldb) p message.length
(unsigned int) $1 = 130
2014-09-11 12:25:01.326 app[1685:6b13] {"errors":[{"code":186,"message":"Status is over 140 characters."}]}
(lldb)
实际网址不是Ccccccc.com,但它的字符数相同。
答案 0 :(得分:4)
您的网址可能只有20个字符。
"出于所有意图和目的,在撰写推文时,所有URL和大多数看似URL的内容应该基本上被视为20个字符。正确呈现t.co链接的客户端和网站使此过程大部分都是透明的 - 您将在UI中看到原始bit.ly链接的表示,但在其下方仍然使用t.co包装"
答案 1 :(得分:0)
问题在于twitter计数字符的方式不同。 Twitter更具体地使用Unicode,UTF-8,并且为了计数字符,Twitter计算字节数以形成一个字符 这里是文档链接:https://developer.twitter.com/en/docs/basics/counting-characters
为了解决这个问题,Twitter创建了一个具有某些功能的库,它确实非常有用。 https://github.com/twitter/twitter-text 支持的语言是Java,Ruby,JavaScript和Objective-C
这是我获取推文长度的方法,解决推文问题需要更短一些。
const twitterText = require('twitter-text')
twitterText.parseTweet(YOURTWEET).weightedLength