你好,歡迎來到IOS教程網

 Ios教程網 >> IOS使用技巧 >> IOS7技巧 >> Swift中實現QQ分享完畢後的回調響應(判斷是否分享成功)

Swift中實現QQ分享完畢後的回調響應(判斷是否分享成功)

編輯:IOS7技巧
下面我們來看一篇關於Swift中實現QQ分享完畢後的回調響應(判斷是否分享成功)的操作教程,希望文章能夠幫助到各位朋友,具體的步驟細節如下文介紹.

我之前寫過一篇關於調用QQ分享的文章:Swift - 騰訊官方SDK的配置及使用(分享到QQ空間、分享到好友)。通過使用騰訊提供的 SDK,我們可以從自己的 App 跳轉到手機 QQ,將消息分享給QQ 好友或發布到空間上。
    

通過 QQApiInterface.send() 方法發送消息後,根據返回 QQApiSendResultCode 類型的結果。我們可以判斷 QQ 是否調用成功。沒調用成功的話還能得到具體錯誤原因(API 不支持、還是 QQ 沒安裝等等)
除了判斷調用是否成功,我們有時還會需要知道發送的結果,這樣根據用戶分享結果進行不同的處理。本文演示如何通過委托響應,捕獲消息分享的結果。

1,樣例效果圖

當分享消息完畢,返回應用時,我們應用中會顯示是否分享成功的提示。如果分享失敗,還會附帶上失敗原因。

2,樣例代碼

(1)ViewController.swift

分享相關的代碼與前文一樣,這裡就不再寫了。點擊查看詳細代碼

(2)AppDelegate.swift

我們在 AppDelegate 中除了要重寫 open url 方法,還要添加 QQApiInterfaceDelegate 代理,並實現相關的代理方法。這樣當消息發送完畢後,我們可以在回調方法中進行需要的操作。


import UIKit
 
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, QQApiInterfaceDelegate  {
 
    var window: UIWindow?
    
    //重寫openURL
    func application(_ app: UIApplication, open url: URL,
                     options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
        QQApiInterface.handleOpen(url, delegate: self)
        return TencentOAuth.handleOpen(url)
    }
    
    //處理來至QQ的響應
    func onResp(_ resp: QQBaseResp!) {
        print("--- onResp ---")
        //確保是對我們QQ分享操作的回調
        if resp.isKind(of: SendMessageToQQResp.self) {
            //QQApi應答消息類型判斷(手Q -> 第三方應用,手Q應答處理分享消息的結果)
            if uint(resp.type) == ESENDMESSAGETOQQRESPTYPE.rawValue {
                let title = resp.result == "0" ? "分享成功" : "分享失敗"
                var message = ""
                switch(resp.result){
                case "-1":
                    message = "參數錯誤"
                case "-2":
                    message = "該群不在自己的群列表裡面"
                case "-3":
                    message = "上傳圖片失敗"
                case "-4":
                    message = "用戶放棄當前操作"
                case "-5":
                    message = "客戶端內部處理錯誤"
                default: //0
                    //message = "成功"
                    break
                }
 
                //顯示消息
                showAlert(title: title, message: message)
            }
        }
    }
    
    //處理來至QQ的請求
    func onReq(_ req:QQBaseReq!){
        print("--- onReq ---")
    }
    
    //處理QQ在線狀態的回調
    func isOnlineResponse(_ response: [AnyHashable : Any]!) {
        print("--- isOnlineResponse ---")
    }
    
    //顯示消息
    func showAlert(title:String, message:String){
        let alertController = UIAlertController(title: title,
            message: message, preferredStyle: .alert)
        let cancelAction = UIAlertAction(title: "確定", style: .cancel, handler: nil)
        alertController.addAction(cancelAction)
        self.window?.rootViewController!.present(alertController, animated: true,
                                                 completion: nil)
    }
    
    func application(_ application: UIApplication,
                     didFinishLaunchingWithOptions launchOptions:
        [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        return true
    }
 
    func applicationWillResignActive(_ application: UIApplication) {
    }
 
    func applicationDidEnterBackground(_ application: UIApplication) {
    }
 
    func applicationWillEnterForeground(_ application: UIApplication) {
    }
 
    func applicationDidBecomeActive(_ application: UIApplication) {
    }
 
    func applicationWillTerminate(_ application: UIApplication) {
    }
}

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved