Twitter APK只发送140个字符?

时间:2018-01-01 22:06:27

标签: swift twitter

有没有人知道Twitter的TwitterKit是否仍然只为推文提取140个字符而不是更新的计数?我将文本放入具有动态属性的UILabel中,该属性应该自行调整大小,但我仍然会截断推文。enter image description here

对于更好奇的人,我也使用以下代码来获取JSON:

    public func fetchTweets(_ handler: @escaping ([Tweet]) -> Void) {
    fetch { results in
        var tweets = [Tweet]()
        var tweetArray: NSArray?
        if let dictionary = results as? NSDictionary {
            if let tweets = dictionary[TwitterKey.tweets] as? NSArray {
                tweetArray = tweets
            } else if let tweet = Tweet(data: dictionary) {
                tweets = [tweet]
            }
        } else if let array = results as? NSArray {
            tweetArray = array
        }
        if tweetArray != nil {
            for tweetData in tweetArray! {
                if let tweet = Tweet(data: tweetData as? NSDictionary) {
                    tweets.append(tweet)
                }
            }
        }
        handler(tweets)
    }
}

    public func fetch(_ handler: @escaping (PropertyList?) -> Void) {
    performTwitterRequest("GET", handler: handler)
}

    func performTwitterRequest(_ method: String, handler: @escaping (PropertyList?) -> Void) {
   Twitter.sharedInstance().sessionStore.session()?.userID {

    let client = TWTRAPIClient()
        let jsonExtension = (self.requestType.range(of: Constants.JSONExtension) == nil) ? Constants.JSONExtension : ""
        let url = "\(Constants.twitterURLPrefix)\(self.requestType)\(jsonExtension)"
        var clientError : NSError?
            let request = client.urlRequest(withMethod: method, url: url, parameters: parameters, error: &clientError)
        sendTwitterRequest(client: client, request: request, handler: handler)

}

func sendTwitterRequest(client: TWTRAPIClient, request: URLRequest, handler: @escaping (PropertyList?) -> Void) {
    client.sendTwitterRequest(request) { (response, responseData, error) -> Void in
        if let err = error {
            print("Error: \(err.localizedDescription)")
        }
         var propertyListResponse: PropertyList?
        if responseData != nil {
            propertyListResponse = try? JSONSerialization.jsonObject(with: responseData!, options: .mutableLeaves)
            if propertyListResponse == nil {
                let error = "Couldn't parse JSON response."
                self.log(error)
                propertyListResponse = error
            }
        }  else {
            let error = "No response from Twitter."
            self.log(error)
            propertyListResponse = error
        }
        self.synchronize {
            self.captureFollowonRequestInfo(propertyListResponse)
        }
        handler(propertyListResponse)
    }
}

2 个答案:

答案 0 :(得分:1)

我建议从一个类似的问题看一下这个答案。 https://stackoverflow.com/a/40429448/8930099

  • 在iOS上,无论URL的原始长度如何,网址都会计为23个字符。
  • 在iOS上,无论大小如何,图像都会计为23个字符。
  • 因此,使用图片和网址,我们只有94个字符 可通过iOS per Tweet获取。而且没有什么可以做的 关于它,除非Twitter更新他们的SDK或Apple更新SLComposeViewController。

答案 1 :(得分:1)

看起来您手动调用Twitter API端点来获取推文数组,因此您需要在调用中添加tweet_mode=extended参数,以便获取最多280个字符的更长推文。