「iOS」項(xiàng)目中集成微信、微博、QQ分享三大平臺(tái)步驟

為了方便第三方開發(fā)者快速簡單的集成國內(nèi)三大社交平臺(tái)(微信,QQ,微博),故造此輪子。

目前支持微信(微信好友,微信朋友圈),QQ,QQ空間,新浪微博)

關(guān)于此模塊的Bug反饋、建議、口水等等,請大家狠拍并提交到Github上,我會(huì)盡快解決。

該模塊會(huì)繼續(xù)完善優(yōu)化,爭取為大家提供一個(gè)更快速、更簡單、更規(guī)范、擴(kuò)展性更好的集成模塊。

特點(diǎn):

  • 快速
  • 簡單
  • 易集成
  • 支持網(wǎng)頁/SSO
  • 擴(kuò)展性好
  • 可定制

===

更新 Log

* 2015-09-29 修復(fù)網(wǎng)頁微博分享時(shí)內(nèi)容沒有傳入的 Bug
* 2015-10-29 適配 iOS 9 下分享
* 2015-11-04 新增三大平臺(tái)分享后的回調(diào)
* 2016-01-11 新增適配 iOS 9 SSO 的 `LSApplicationQueriesSchemes`配置說明

集成步驟

1. 下載微信、QQ、微博的社交sdk并導(dǎo)入至項(xiàng)目中

  • 可在本頁下方參考資料中取得

2. 導(dǎo)入它們所需的系統(tǒng)framework與庫

程序 —— Targets —— Build Phases —— Link Binary With Libraries

Security.framework, SystemConfiguration.framework, CoreGraphics.framework, CoreTelephony.framework, QuartzCore.framework, ImageIO.framework, CoreText.framework, UIKit.framework, Foundation.framework, libsqlite3.dylib, libc++.dylib, libz.dylib, libstdc++.dylib, libiconv.dylib

  • (具體可參考本頁底部參考資料鏈接)

3. 設(shè)置編譯選項(xiàng)

程序 —— Targets —— Build Settings —— Linking —— Other Linker Flag 添加 -ObjC

4. 設(shè)置URL Schema

  1. 程序 —— Targets —— Info —— URL Types

分別添加微信,QQ,微博

tencentopenapi : tencent222222

mqqapi : QQ0605C97A

weibo : wb2045436852

weixin : wxd930ea5d5a258f4f

  • 以上均為測試app key,具體可以去對應(yīng)的開放平臺(tái)注冊

  • mqqapi 是 tencent 的 app key 轉(zhuǎn)十六進(jìn)制,不足八位在前面補(bǔ) 0 的結(jié)果

  1. 在 Info.plist 中添加LSApplicationQueriesSchemes項(xiàng),
    分別添加社交平臺(tái)的幾個(gè)白名單:
    mqq
    mqqopensdkapiV2
    mqqapi
    weibosdk2.5
    weibosdk
    weibo
    weixin
    wechat

具體列表請至獲取iOS 9 應(yīng)用跳轉(zhuǎn)適配

5. 導(dǎo)入XMShareView至項(xiàng)目中

XMShareView結(jié)構(gòu)介紹:
名稱 解釋
CommonMarco.h 通用宏文件,包含APP Key等宏
ExtView/ 擴(kuò)展View,VerticalUIButton為圖片文件垂直對齊按鈕
Resource/ 圖片等資源,包含微信、QQ、微博圖標(biāo)
ShareUtil/ 分享工具類
XMShareView.h 分享顯示視圖

6. 在AppDelegate.m中注冊

  1. 導(dǎo)入文件頭
#import "WXApi.h"
#import <TencentOpenAPI/TencentOAuth.h>
#import "WeiboSDK.h"
  1. application -> didFinishLaunchingWithOptions 方法中注冊
[WXApi registerApp:APP_KEY_WEIXIN];
[WeiboSDK enableDebugMode:YES];
[WeiboSDK registerApp:APP_KEY_WEIBO];

7. 在ViewController.m 中引用

  • 導(dǎo)入文件頭

    #import "XMShareView.h"
    
  • 添加一個(gè)屬性

@property (nonatomic, strong) XMShareView *shareView;
  • 在點(diǎn)擊分享的方法添加如下代碼:
   if(!self.shareView){
        
        self.shareView = [[XMShareView alloc] initWithFrame:self.view.bounds];
        
        self.shareView.alpha = 0.0;

        self.shareView.shareTitle = NSLocalizedString(@"分享標(biāo)題", nil);
        
        self.shareView.shareText = NSLocalizedString(@"分享內(nèi)容", nil);
        
        self.shareView.shareUrl = @"http://xumeng.github.com";
        
        [self.view addSubview:self.shareView];
        
        [UIView animateWithDuration:1 animations:^{
            self.shareView.alpha = 1.0;
        }];
        
        
    }else{
        [UIView animateWithDuration:1 animations:^{
            self.shareView.alpha = 1.0;
        }];
        
    }

8. 處理 URL 跳轉(zhuǎn)

AppDelegate 類中實(shí)現(xiàn)兩個(gè)處理 URL 跳轉(zhuǎn)的方法。

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    if ([[url absoluteString] hasPrefix:@"tencent"]) {
        
//        return [TencentOAuth HandleOpenURL:url];
        return [QQApiInterface handleOpenURL:url delegate:self];
        
    }else if([[url absoluteString] hasPrefix:@"wb"]) {
        
        return [WeiboSDK handleOpenURL:url delegate:self];
        
    }else if([[url absoluteString] hasPrefix:@"wx"]) {

        //  處理微信回調(diào)需要在具體的 ViewController 中處理。
        ViewController *vc = (ViewController *)self.window.rootViewController;
        return [WXApi handleOpenURL:url delegate:vc];
        
    }
    
    return NO;
}

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
    if ([[url absoluteString] hasPrefix:@"tencent"]) {
        
        return [TencentOAuth HandleOpenURL:url];
        
    }else if([[url absoluteString] hasPrefix:@"wb"]) {
        
        return [WeiboSDK handleOpenURL:url delegate:self];
        
    }else{
        
        ViewController *vc = (ViewController *)self.window.rootViewController;
        return [WXApi handleOpenURL:url delegate:vc];
        
    }
}

9. 處理分享后的回調(diào)

特別提醒:(下方方法體內(nèi)是示例代碼,具體業(yè)務(wù)邏輯請具體實(shí)現(xiàn))

  • 微信分享:在具體的調(diào)用 ViewController 類里面實(shí)現(xiàn)微信 WXApiDelegate 協(xié)議,然后實(shí)現(xiàn)以下方法:
- (void)onResp:(BaseResp *)resp
{
    NSString *message;
    if(resp.errCode == 0) {
        message = @"分享成功";
    }else{
        message = @"分享失敗";
    }
    showAlert(message);
}
  • QQ 分享:在 AppDelegate 類中實(shí)現(xiàn) QQApiInterfaceDelegate 協(xié)議,然后實(shí)現(xiàn)以下方法:
- (void)onResp:(QQBaseResp *)resp
{
    NSString *message;
    if([resp.result integerValue] == 0) {
        message = @"分享成功";
    }else{
        message = @"分享失敗";
    }
    showAlert(message);
}
  • 微博分享:在 AppDelegate 類中實(shí)現(xiàn) WeiboSDKDelegate 協(xié)議,然后實(shí)現(xiàn)以下方法:
- (void)didReceiveWeiboResponse:(WBBaseResponse *)response
{
    NSString *message;
    switch (response.statusCode) {
        case WeiboSDKResponseStatusCodeSuccess:
            message = @"分享成功";
            break;
        case WeiboSDKResponseStatusCodeUserCancel:
            message = @"取消分享";
            break;
        case WeiboSDKResponseStatusCodeSentFail:
            message = @"分享失敗";
            break;
        default:
            message = @"分享失敗";
            break;
    }
    showAlert(message);
}

參考資料

QQ iOS SDK 環(huán)境搭建

新浪微博 iOS SDK 環(huán)境搭建

微信 iOS SDK 環(huán)境搭建

iOS 9 適配 SSO

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • iOS開發(fā)過程中可能會(huì)遇到需要進(jìn)行第三方分享的需求,比如向QQ,微信,微博等分享,我們今天要講到的方式是使用了一個(gè)...
    iOS菜鳥攻城獅閱讀 1,632評論 0 4
  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一種新的協(xié)議。它實(shí)...
    香橙柚子閱讀 24,773評論 8 183
  • 昨晚,縱火者摧毀了我的家園 高舉勝利的火把 狂歡 焚燒經(jīng)典 牧羊人也在今日趕來 手捧鮮花 美夢以及安慰 他說孩子 ...
    阿洛特斯閱讀 170評論 0 1
  • 心飛著飛著, 已飛向了高傲, 孤冷也疼痛; 腳走著走著, 卻拔不出塵世, 乏力也沉重。 塵世囚禁了高傲, 孤冷遭遇...
    Luciahuang閱讀 322評論 0 2
  • 一直以為自己人際關(guān)系挺好的,直到現(xiàn)在我才發(fā)現(xiàn),當(dāng)我被誤解時(shí),連個(gè)發(fā)泄的朋友也沒有??粗車娜艘惶焯煸谧?,我是否也...
    mentaldisease閱讀 218評論 0 0

友情鏈接更多精彩內(nèi)容