Twitter API에서 얻은 트윗을 iOS 앱에서 표시
14630 단어 TwitterAPISwift5
이 기사의 내용
이 기사는 이전에 작성한 기사입니다.
Twitter API를 처음 만져보세요 (트윗 얻기)
계속됩니다.
내용으로,
- Twitter API로 얻은 트윗을 TableView 형식으로 표시합니다.
일을하십시오.
환경
Swift5
Xcode 11.3.1
1. 앱 구성
앱은 다음 두 개의 ViewControllerl 클래스로 구성됩니다.
- InitialViewController
(사용자 이름과 검색 할 트윗 수를 입력하여 TimeLineViewController로 전환)
- TimeLineViewController
(트윗 얻기, 얻은 트윗 표시)
이 기사의 끝에 코드 전문을 얹은 링크를 올려 놓으니이 기사만으로 모르면 참조하십시오.
다음은 storyboard입니다. (정말 간단합니다 ...)
실제로 트윗을 얻으면이 느낌이됩니다. (완성도)
응답의 경우 상대방의 사용자 이름을 숨 깁니다.
2.API로 트윗 받기, 표시
이 기사의 메인은 API에서 트윗을 가져 와서 표시하기 때문에 주로 TimeLineViewController의 처리를 중심으로 작성합니다.
이 앱에서는 다음 라이브러리를 사용했습니다. (Cocoapods로 설치)
- Alamofire
- SwiftyJSON
- SDWebImage
Cocoapods 설정은 다음을 참조하십시오.
【Swift】CocoaPods 도입 순서
2-1.TwitterAPI로 트윗 받기
Alamofire를 사용하여 HTTP 요청을합니다.
AF.request(urlText, method: .get, parameters: nil, encoding:
JSONEncoding.default, headers: headers).responseJSON { (response) in
URL, 헤더는 위에서 GET 메소드를 사용한 것과 동일합니다.
Alamofire는 HTTP 요청을 한 후 response에 따른 처리를 클로저로 작성합니다.
클로저 내에서
- JSON 퍼스
- 트윗 텍스트 데이터를 배열에 저장
- 프로필 이미지 URL 가져오기
하고 있습니다.
Twiiter API로 얻을 수있는 트윗의 JSON 형식에 대해서는 아래를 참조하십시오.
Introduction to Tweet JSON
헤더의 ""안에는, 마지막에 입수한 자신의 베아라토큰을 넣어 주세요.
$ curl -H "Authorization: Bearer AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2FAAAAAAAAAAAA
AAAAAAAA%3DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
'https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=twitterapi&count=100'
이것은 이전 기사의 curl에서 트윗을 얻는 명령입니다.Bearer
부분에서 넣으십시오.
다음은 트윗을 검색하는 전체 메소드입니다.
TimeLineViewController.swiftfunc getTweets(){
let urlText = "https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=
\(screenName)&count=\(tweetCount)"
let headers:HTTPHeaders = ["Authorization": ""]
//Getメソッドでツイート取得
AF.request(urlText, method: .get, parameters: nil, encoding: JSONEncoding.default, headers: headers).responseJSON { (response) in
switch response.result{
//リクエスト成功
case .success:
for i in 0..<self.tweetCount{
let json:JSON = JSON(response.data as Any)
//JSONをパースしてツイートを取得
let text = json[i]["text"].string!
//取得したツイートを配列に格納
self.tweetArray.append(text)
//JSONをパースしてプロフィール画像のURLを取得
let profileImageUrl = json[i]["user"]["profile_image_url_https"].string
//プロフィール画像のURLを取得
self.urlString = profileImageUrl!
}
break
//リクエスト失敗
case .failure(let error):
print(error)
break
}
self.tableView.reloadData()
}
}
2-2. 취득한 트윗을 TableView에서 표시
tableView의 기능을 사용하여 트윗을 표시합니다.
cellForRowAt 중에서 취득한 데이터를 셀에 반영합니다.
다음은 주요 기능 코드입니다.
TimeLineViewController.swift //セクションの数
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
//セルの数
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return tweetArray.count
}
//セルの構成
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
let profileImageURL = URL(string: urlString as String)!
//セルにプロフィール画像を表示させる
cell.imageView?.sd_setImage(with: profileImageURL, completed: { (image, error, _, _) in
if error == nil{
print("Not error")
cell.setNeedsLayout()
}
else{
print(error)
}
})
//セルにツイートを表示させる
cell.textLabel?.text = self.tweetArray[indexPath.row]
cell.textLabel?.adjustsFontSizeToFitWidth = true
return cell
}
//セルが選択された時
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("didSelectRowAt", indexPath.row)
print("NSindexPath.row: ", (indexPath as NSIndexPath).row)
}
마지막으로
다음은 전체 코드가있는 리포지토리 링크입니다.
htps : // 기주 b. 코 m / 마사키 사카이 0305 / 토테라 피아 p
Swift와 API 공부를 위해 이번 트윗 취득을 API로 실시하고 그것을 표시하는 곳까지 정리했습니다.
자신과 비슷한 공부를 시작한 사람을 이해하는 데 도움이 되길 바랍니다.
Reference
이 문제에 관하여(Twitter API에서 얻은 트윗을 iOS 앱에서 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/masa_unofficial/items/70fb47d26623f227fb6b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이 기사의 메인은 API에서 트윗을 가져 와서 표시하기 때문에 주로 TimeLineViewController의 처리를 중심으로 작성합니다.
이 앱에서는 다음 라이브러리를 사용했습니다. (Cocoapods로 설치)
- Alamofire
- SwiftyJSON
- SDWebImage
Cocoapods 설정은 다음을 참조하십시오.
【Swift】CocoaPods 도입 순서
2-1.TwitterAPI로 트윗 받기
Alamofire를 사용하여 HTTP 요청을합니다.
AF.request(urlText, method: .get, parameters: nil, encoding:
JSONEncoding.default, headers: headers).responseJSON { (response) in
URL, 헤더는 위에서 GET 메소드를 사용한 것과 동일합니다.
Alamofire는 HTTP 요청을 한 후 response에 따른 처리를 클로저로 작성합니다.
클로저 내에서
- JSON 퍼스
- 트윗 텍스트 데이터를 배열에 저장
- 프로필 이미지 URL 가져오기
하고 있습니다.
Twiiter API로 얻을 수있는 트윗의 JSON 형식에 대해서는 아래를 참조하십시오.
Introduction to Tweet JSON
헤더의 ""안에는, 마지막에 입수한 자신의 베아라토큰을 넣어 주세요.
$ curl -H "Authorization: Bearer AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2FAAAAAAAAAAAA
AAAAAAAA%3DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
'https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=twitterapi&count=100'
이것은 이전 기사의 curl에서 트윗을 얻는 명령입니다.
Bearer
부분에서 넣으십시오.다음은 트윗을 검색하는 전체 메소드입니다.
TimeLineViewController.swift
func getTweets(){
let urlText = "https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=
\(screenName)&count=\(tweetCount)"
let headers:HTTPHeaders = ["Authorization": ""]
//Getメソッドでツイート取得
AF.request(urlText, method: .get, parameters: nil, encoding: JSONEncoding.default, headers: headers).responseJSON { (response) in
switch response.result{
//リクエスト成功
case .success:
for i in 0..<self.tweetCount{
let json:JSON = JSON(response.data as Any)
//JSONをパースしてツイートを取得
let text = json[i]["text"].string!
//取得したツイートを配列に格納
self.tweetArray.append(text)
//JSONをパースしてプロフィール画像のURLを取得
let profileImageUrl = json[i]["user"]["profile_image_url_https"].string
//プロフィール画像のURLを取得
self.urlString = profileImageUrl!
}
break
//リクエスト失敗
case .failure(let error):
print(error)
break
}
self.tableView.reloadData()
}
}
2-2. 취득한 트윗을 TableView에서 표시
tableView의 기능을 사용하여 트윗을 표시합니다.
cellForRowAt 중에서 취득한 데이터를 셀에 반영합니다.
다음은 주요 기능 코드입니다.
TimeLineViewController.swift
//セクションの数
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
//セルの数
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return tweetArray.count
}
//セルの構成
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
let profileImageURL = URL(string: urlString as String)!
//セルにプロフィール画像を表示させる
cell.imageView?.sd_setImage(with: profileImageURL, completed: { (image, error, _, _) in
if error == nil{
print("Not error")
cell.setNeedsLayout()
}
else{
print(error)
}
})
//セルにツイートを表示させる
cell.textLabel?.text = self.tweetArray[indexPath.row]
cell.textLabel?.adjustsFontSizeToFitWidth = true
return cell
}
//セルが選択された時
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("didSelectRowAt", indexPath.row)
print("NSindexPath.row: ", (indexPath as NSIndexPath).row)
}
마지막으로
다음은 전체 코드가있는 리포지토리 링크입니다.
htps : // 기주 b. 코 m / 마사키 사카이 0305 / 토테라 피아 p
Swift와 API 공부를 위해 이번 트윗 취득을 API로 실시하고 그것을 표시하는 곳까지 정리했습니다.
자신과 비슷한 공부를 시작한 사람을 이해하는 데 도움이 되길 바랍니다.
Reference
이 문제에 관하여(Twitter API에서 얻은 트윗을 iOS 앱에서 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/masa_unofficial/items/70fb47d26623f227fb6b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Twitter API에서 얻은 트윗을 iOS 앱에서 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/masa_unofficial/items/70fb47d26623f227fb6b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)