iOS呼叫QQ客戶端發起臨時會話

朱曉輝Allen發表於2019-03-01

一.前言:

前段時間專案中有個需求,在App內呼叫QQ客戶端,在不是好友前提下,向指定的客服QQ發起臨時會話,很簡單的一個需求,但是實際實現起來卻碰到很多問題.
  • 1.QQ開發者平臺,並沒有找到App呼叫QQ客戶端發起臨時會話方法,(只提供了網頁端接入方法)
  • 2.網上搜到的一些方法,大部分都粗秒淡寫,要麼可以呼叫QQ客戶端,不能成功傳送訊息,要麼是其他問題.
經過一段時間摸索,發現接入方法相當簡單,現將接入方法分享給大家,希望有同樣需求的同鞋,少走彎路.

二.效果:

DEMO.gif

三.需求:

  • App內呼叫QQ客戶端,在不是好友前提下,向指定QQ號發起臨時會話

四.接入方法:

1.用來接收臨時訊息QQ號(拿這個QQ號舉例:1099779883)需開通QQ推廣功能,未開通QQ推廣功能,是不能接收陌生人訊息的,開通方法如下:
  • 1.開通方式:開啟QQ推廣網址 http://shang.qq.com 並用接收臨時訊息QQ號(1099779883)登入
  • 2.點選頂部導航欄:推廣工具,(如圖):
    Paste_Image.png
  • 3.在彈出選單中點選`立即免費開通`(如圖:)即可
    Paste_Image.png
2.將QQ(mqq欄位)新增到專案plist檔案白名單中(iOS9新出要求),方法如下:
  • 1.在專案info.plist新增LSApplicationQueriesSchemes欄位 型別Array
  • 2.在此Array中新增一個 item 值設為:mqq(如圖)
    Paste_Image.png
3.直接上程式碼:
    //是否安裝QQ
    if([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"mqq://"]])
    {
         //用來接收臨時訊息的客服QQ號碼(注意此QQ號需開通QQ推廣功能,否則陌生人向他傳送訊息會失敗)
         NSString *QQ = @"1099779883";
         //呼叫QQ客戶端,發起QQ臨時會話
         NSString *url = [NSString stringWithFormat:@"mqq://im/chat?chat_type=wpa&uin=%@&version=1&src_type=web",QQ];
         [[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
    }
複製程式碼

五.注意事項:

  • 1.由於開發文件中規定App的正常使用不能依賴其他App,所以在專案中整合此功能的童鞋要注意,在未安裝QQ客戶端時建議影藏此功能,不然上架有被拒風險.
  • 2.我前期上架一個專案,便是這樣處理的.

六.小結:

  • 此專案程式碼我做了簡單的封裝:託管在github,有需要的童鞋可以下載:
    程式碼地址:github.com/CoderZhuXH/…

相關文章