iOS 어플리케이션 및 Twitter 제휴

14657 단어 SwiftTwitterKitiOS

개시하다


Social.프레임워크나 UIACtivity ViewController가 사용할 수 없기 때문에 트위터 Kit3입니다.4.0 디저트를 만들어 봤어요.
프로그램
  • 트위터 Developers에 앱 등록(이 글에서 생략)
  • TwitterKit 설치
  • 프로젝트 설정
  • 인증부 설치
  • 튜브 집행부 설치
  • 이(가) 구현되었습니다.

    TwitterKit 설치


    이번에 코코팟을 사용했어요.
    Podfile은
    # Uncomment the next line to define a global platform for your project
    # platform :ios, '9.0'
    
    target 'twitterKitSmp' do
      # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
      use_frameworks!
    
      # Pods for twitterKitSmp
      pod 'TwitterKit'  <-- 追加
    end
    
    라는 느낌을 받았다.
    프로젝트 디렉토리에서
    % pod init
    <Podfileが作成されるので、pod 'TwitterKit'を追加>
    % pod install
    
    지금까지 트위터 키트 설치였습니다.

    프로젝트 설정


    info.plist에 다음 내용을 추가합니다.
    <key>CFBundleURLTypes</key>
      <array>
        <dict>
          <!-- 追加ここから -->
          <key>CFBundleURLSchemes</key>
          <array>
            <string>twitterkit-{CONSUMERKEY}</string>
          </array>
          <!-- 追加ここまで -->
        </dict>
      </array>
      <!-- 追加ここから -->
      <key>LSApplicationQueriesSchemes</key>
      <array>
        <string>twitter</string>
        <string>twitterauth</string>
      </array>
      <!-- 追加ここまで -->
    
    CFBundleURLTypes.CFBundleURLSchemes 및 LS Application QueriesSchomes를 추가합니다.
    CFBundleURLSchemes는 트위터 API 측면의 Callback URL에도 추가로 기재한다.

    인증부 설치


    우선 트위터 키트의 초기 설정 등을 진행한다.
    AppDelegate.swift
    func application(_ application: UIApplication, didFinishLaunchingWithOptions
                     launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
    
        // 1. TwitterAPIのAPI keyとAPI secret keyを設定
        TWTRTwitter.sharedInstance().start(withConsumerKey: "{CONSUMERKEY}",
                                           consumerSecret: "{CONSUMERSECRET}")
        return true
      }
    
      func application(_ app: UIApplication, open url: URL, 
                       options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
        // 2. Twitter認証からのコールバック
        if TWTRTwitter.sharedInstance().application(app, open: url, options: options) {
          return true
        }
    
        return false
      }
    
  • 애플리케이션이 시작될 때 Twitter API의 APIkey와 API secretkey를 설정합니다.
  • 트위터 인증을 받은 응답.
  • 다음은 인증 시작 부분을 실현할 것이다. 
    ViewController.swift
    func sndTweet() {
      // 1.ログインされているか?
      if TWTRTwitter.sharedInstance().sessionStore.hasLoggedInUsers() {
        // 2.ツィート開始
        sndTweetExec()
      } else {
        // 3.認証開始
        TWTRTwitter.sharedInstance().logIn(with: self, completion: { (session, error) in
          if let sess = session {
            print("Signed in as \(sess.userName)")
            // 4.ツィート開始
            self.sndTweetExec()
          } else {
            // 5.認証失敗
            print("login error: \(error?.localizedDescription)")
          }
        })
      }
    }
    
  • 트위터에 로그인했는지 확인합니다.
  • 이미 등록되어 있어 영구에 들어가기 시작합니다.
  • Twitter 인증 시작트위터로 이동하는 로그인 화면.로그인하면 프로그램의 합작을 허용하는지 물어보고 허용하면 프로그램으로 돌아갑니다.
  • 인증 성공, 지금부터 진행.
  • 인증이 실패했습니다. 여기서 마치겠습니다.
  • 튜브 집행부 설치


    카터는 트위터 키트의 T WTR Composer View Controller를 사용했다.
    또한 설치할 때tult를 실행한 후 경보를 보내야 한다.
    ViewController.swift
    func sndTweetExec() {
      let str:String = "サンプルツィート"
    
      // 1.コントローラー初期化
      let comp = TWTRComposerViewController.init(initialText: str, image: nil, videoData: nil)
    
      // 2.デレゲート
      comp.delegate = self
    
      // 3.コントローラ表示
      present(comp, animated: true, completion: nil)
    }
    
  • T WTRComposerViewController를 초기화합니다.이번에는 교과서밖에 없어요.
  • 오프라인 문을 설치한다.deregate는 약속 취소와 성공, 실패를 정의합니다.
  • 디스플레이 컨트롤러.
  • 다음에deregate 처리를 실시합니다.
    ViewController.swift
    extension ViewController: TWTRComposerViewControllerDelegate {
      // キャンセル時
      func composerDidCancel(_ controller: TWTRComposerViewController) {
        print("Cancel")
      }
    
      // ツィート失敗時
      func composerDidFail(_ controller: TWTRComposerViewController, withError error: Error) {
        print("Error")
        let store = TWTRTwitter.sharedInstance().sessionStore
        if let userID = store.session()?.userID {
          store.logOutUserID(userID)
        }
        dismiss(animated: false, completion: nil)
        DispatchQueue.main.async {
          self.tweetAlert(memo:"Twitterに投稿に失敗しました")
        }
      }
    
      // ツィート成功時
      func composerDidSucceed(_ controller: TWTRComposerViewController, with tweet: TWTRTweet) {
        print("Ok")
        dismiss(animated: false, completion: nil)
        DispatchQueue.main.async {
          self.tweetAlert(memo: "Twitterに投稿しました。\nご協力ありがとうございます。")
        }
      }
    
    }
    
    이번에는 Twit를 실행한 후에 경보를 표시하려고 하기 때문에dere 울타리 방법에서dismiss () 를 호출하여 View를 닫습니다.
    DispatchQueue.main.ASync는 필요 없을지도 모르지만 혹시 모르니까...

    샘플 응용 프로그램





    이런 느낌의 앱을 사용해 봤어요.
    소스 코드
    소스를 하나 넣었다.

    총결산


    이상에서 대강 한 차례 총결하여 마음에 두는 곳으로 삼았다
  • Callback URL을 지정할 수 없습니다.
    나는 지정된 방법이 있는 것 같았지만 찾지 못했다.
  • 화면을 맞춤 제작하고 싶습니다.
    할 수 있을 것 같지만 이번엔 못 했어요.
    다음에 기회가 된다면 다시 시도해 보자.
  • 그리고 아래의 보도를 참고하게 해 주세요.감사합니다.
    iOS 11 지원 트위터 기고(Social framework→Twitter Kit)

    좋은 웹페이지 즐겨찾기