U-Share(友盟社會化SDK 6.3.0) 分享及登錄的使用心得

最近兩天都在學習友盟分享和登錄,因為自己作為一名新手開發者第一次接觸友盟,并且友盟分享的SDK在6.0后與前面的版本改動比較大,所以在學習的過程中遇到了許多的問題,在其他網頁中許多的資料和使用教程都是基于5.0-5.3版本的,因此我想寫一篇關于友盟最新版本(v6.3.0)的使用心得。簡單記錄一下我使用的步驟,希望對第一次接觸新版本的朋友們有所幫助。

①友盟分享基本功能集成

一、下載SDK

1.1 登錄友盟官網
    1.2 點擊導航欄上的產品->運營工具->U-Share

步驟1.1-1.2 :點擊U-Share按鈕

   1.3 點擊查看SDK->選擇蘋果設備文檔

步驟1.3:進入蘋果設備U-Share集成文檔

1.4 點擊右上角的SDK下載按鈕進入SDK下載頁面

1.5 選擇你需要的版本,進行下載

步驟1.4
步驟1.5.1
步驟1.5.2

  在這里我就選擇默認的平臺(微信、QQ、微博)你們也可以按照自己的需求選擇所需要的分享平臺進行下載SDK

當然也可以通過Cocoapods集成(比較方便)

下載、解壓完成后的SDK目錄
  1. Document - U-Share SDK文檔
  2. UMSocialDemo - U-Share SDK Demo(如點選下載)
  3. UMSocial - U-Share SDK核心目錄
    UMSocialSDK - U-Share SDK核心framework
    UMSocialUI - U-Share 分享UI資源、分享面板framework
    SocialLibraries - 所選擇下載的第三方平臺SDK及U-Share鏈接庫

二、注冊友盟開發者賬號、添加新應用、獲取APPKey

2.1 注冊:地址:https://i.umeng.com/signup
   2.2 登錄后添加新應用: 同1.2 打開U-Share 選擇立即使用

步驟2.2

   2.3 點擊左上角全部應用


步驟2.3

   2.4 點擊添加新應用,填寫應用相關信息獲取唯一Appkey

步驟2.4.1
步驟2.4.2

三、集成U-Share v6.3.0到自己的項目中

3.1 新建項目然后把UMSocial 文件夾拖入項目中:

步驟3.1

   3.2 在Bulid Setting找到Other Linker Flags,添加-ObjC
步驟3.2

   3.3加入依賴系統庫(下面分別有微信、微博、QQ所需要的依賴系統庫)
步驟3.3加入依賴系統庫

各平臺所需要的依賴庫

四、U-Share SDK平臺配置(iOS9+)

4.1需要有友盟及第三方平臺的AppKey和AppSecret 具體參照:第三方賬號申請及綁定
   4.2 我的項目只使用了微信和微博的分享

注意點:
1.在第三方平臺創建應用,如果只是用來測試的話,是不用填寫AppStore ID的,只要創建應用就會生成appKey和appSecret并且可以拿來測試,但是Bundle ID一定要和測試應用的一致!
2.QQ:一定要填寫正確應用調試者賬號!如果你在騰訊開放平臺登錄的賬號和你測試的賬號不一致,就會出錯!
3.Sina:一定要按照文檔中說的修改安全域名以及設置授權回調頁,并且還要在友盟后臺綁定

4.3 配置各平臺URL Scheme

URL Scheme是通過系統找到并跳轉對應app的一類設置,通過向項目中的info.plist文件中加入URL types可使用第三方平臺所注冊的appkey信息向系統注冊你的app,當跳轉到第三方應用授權或分享后,可直接跳轉回你的app。具體參照:http://www.lxweimin.com/p/f367b4a5e871

步驟4.3配置各平臺URL Scheme

   4.4 配置SSO白名單(iOS9/10)

如果你的應用使用了如SSO授權登錄或跳轉到第三方分享功能,在iOS9/10下就需要增加一個可跳轉的白名單,即LSApplicationQueriesSchemes,否則將在SDK判斷是否跳轉時用到的canOpenURL時返回NO,進而只進行webview授權或授權/分享失敗。 在項目中的info.plist中加入應用白名單,右鍵info.plist選擇source code打開(plist具體設置在Build Setting -> Packaging -> Info.plist File可獲取plist路徑) 請根據選擇的平臺對以下配置進行裁剪:

<key>LSApplicationQueriesSchemes</key>
<array>
    <!-- 微信 URL Scheme 白名單-->
    <string>wechat</string>
    <string>weixin</string>

    <!-- 新浪微博 URL Scheme 白名單-->
    <string>sinaweibohd</string>
    <string>sinaweibo</string>
    <string>sinaweibosso</string>
    <string>weibosdk</string>
    <string>weibosdk2.5</string>

    <!-- QQ、Qzone URL Scheme 白名單-->
    <string>mqqapi</string>
    <string>mqq</string>
    <string>mqqOpensdkSSoLogin</string>
    <string>mqqconnect</string>
    <string>mqqopensdkdataline</string>
    <string>mqqopensdkgrouptribeshare</string>
    <string>mqqopensdkfriend</string>
    <string>mqqopensdkapi</string>
    <string>mqqopensdkapiV2</string>
    <string>mqqopensdkapiV3</string>
    <string>mqqopensdkapiV4</string>
    <string>mqzoneopensdk</string>
    <string>wtloginmqq</string>
    <string>wtloginmqq2</string>
    <string>mqqwpa</string>
    <string>mqzone</string>
    <string>mqzonev2</string>
    <string>mqzoneshare</string>
    <string>wtloginqzone</string>
    <string>mqzonewx</string>
    <string>mqzoneopensdkapiV2</string>
    <string>mqzoneopensdkapi19</string>
    <string>mqzoneopensdkapi</string>
    <string>mqqbrowser</string>
    <string>mttbrowser</string>

    <!-- 支付寶 URL Scheme 白名單-->
    <string>alipay</string>
    <string>alipayshare</string>

    <!-- 釘釘 URL Scheme 白名單-->
      <string>dingtalk</string>
      <string>dingtalk-open</string>

    <!-- 點點蟲 URL Scheme 白名單-->
    <string>laiwangsso</string>

    <!-- 易信 URL Scheme 白名單-->
    <string>yixin</string>
    <string>yixinopenapi</string>

    <!-- instagram URL Scheme 白名單-->
    <string>instagram</string>

    <!-- whatsapp URL Scheme 白名單-->
    <string>whatsapp</string>

    <!-- line URL Scheme 白名單-->
    <string>line</string>

    <!-- Facebook URL Scheme 白名單-->
    <string>fbapi</string>
    <string>fb-messenger-api</string>
    <string>fbauth2</string>
    <string>fbshareextension</string>

    <!-- Kakao URL Scheme 白名單-->  
    <!-- 注:以下第一個參數需替換為自己的kakao appkey--> 
    <!-- 格式為 kakao + "kakao appkey"-->    
    <string>kakaofa63a0b2356e923f3edd6512d531f546</string>
    <string>kakaokompassauth</string>
    <string>storykompassauth</string>
    <string>kakaolink</string>
    <string>kakaotalk-4.5.0</string>
    <string>kakaostory-2.9.0</string>

   <!-- pinterest URL Scheme 白名單-->  
    <string>pinterestsdk.v1</string>

   <!-- Tumblr URL Scheme 白名單-->  
    <string>tumblr</string>

   <!-- 印象筆記 -->
    <string>evernote</string>
    <string>en</string>
    <string>enx</string>
    <string>evernotecid</string>
    <string>evernotemsg</string>

   <!-- 有道云筆記-->
    <string>youdaonote</string>
    <string>ynotedictfav</string>
    <string>com.youdao.note.todayViewNote</string>
    <string>ynotesharesdk</string>

   <!-- Google+-->
    <string>gplus</string>

   <!-- Pocket-->
    <string>pocket</string>
    <string>readitlater</string>
    <string>pocket-oauth-v1</string>
    <string>fb131450656879143</string>
    <string>en-readitlater-5776</string>
    <string>com.ideashower.ReadItLaterPro3</string>
    <string>com.ideashower.ReadItLaterPro</string>
    <string>com.ideashower.ReadItLaterProAlpha</string>
    <string>com.ideashower.ReadItLaterProEnterprise</string>

   <!-- VKontakte-->
    <string>vk</string>
    <string>vk-share</string>
    <string>vkauthorize</string>
</array>

五、 初始化U-Share及第三方平臺

以下代碼根據自己的需要進行選擇,一定要設置對appKey和appSecret
AppDelegate.m中加入以下代碼

 5.1初始化U-Share及第三方平臺
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    //打開日志
    [[UMSocialManager defaultManager]openLog:YES];
    //設置友盟appkey
    [[UMSocialManager defaultManager]setUmSocialAppkey:@"你在友盟創建的AppKey"];
    //獲取友盟social版本號
    NSLog(@"友盟版本: %@", [UMSocialGlobal umSocialSDKVersion]);
    //設置微信的appID和appKey
    [[UMSocialManager defaultManager]setPlaform:UMSocialPlatformType_WechatSession                 
       appKey:@"wxdc1e388c3822c80b"
       appSecret:@"3baf1193c85774b3fd9d18447d76cab0"
       redirectURL:@"http://mobile.umeng.com/social"
    ];
    //設置微博的appID和appkey
    [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_Sina
        appKey:@"3210168487"
        appSecret:@"617fe71b46f0dff305a364c27a465dac"
        redirectURL:@"http://sns.whalecloud.com/sina2/callback"
    ];
    //如果不想顯示平臺下的某些類型,可用以下接口設置
  /*  
        [[UMSocialManager defaultManager] removePlatformProviderWithPlatformTypes:@[
        @(UMSocialPlatformType_QQ),@(UMSocialPlatformType_WechatFavorite)
        ]
    ];*/
    return YES;
}
5.2設置系統回調  
#if __IPHONE_OS_VERSION_MAX_ALLOWED >100000

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    //6.3的新的API調用,是為了兼容國外平臺(例如:新版facebookSDK,VK等)的調用[如果用6.2的api調用會沒有回調],對國內平臺沒有影響
    BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url sourceApplication:sourceApplication annotation:annotation];
    if (!result) {
        // 其他如支付等SDK的回調
    }
    return result;
}
#endif
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options
{
    //6.3的新的API調用,是為了兼容國外平臺(例如:新版facebookSDK,VK等)的調用[如果用6.2的api調用會沒有回調],對國內平臺沒有影響
    BOOL result = [[UMSocialManager defaultManager]  handleOpenURL:url options:options];
    if (!result) {
        // 其他如支付等SDK的回調
    }
    return result;
}
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
    BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url];
    if (!result) {
        // 其他如支付等SDK的回調
    }
    return result;
}

六、第三方平臺分享

這一步就離成功不遠了,現在你想要分享的控制器中加入以下代碼

6.1彈出分享面板
#import <UShareUI/UShareUI.h>
//點擊分享按鈕
- (IBAction)share:(id)sender {
    __weak typeof(self) weakSelf = self;
    //顯示分享面板
    [UMSocialUIManager showShareMenuViewInView:nil sharePlatformSelectionBlock:^(UMSocialShareSelectionView *shareSelectionView, NSIndexPath *indexPath, UMSocialPlatformType platformType) {
        // 根據platformType調用相關平臺進行分享
        if (platformType == UMSocialPlatformType_WechatSession) {
            [weakSelf shareWebPageToPlatformType:UMSocialPlatformType_WechatSession];
        } else if () {
            
        }
        ...
    }];
}
6.2 - (void)shareWebPageToPlatformType:(UMSocialPlatformType)platformType
- (void)shareWebPageToPlatformType:(UMSocialPlatformType)platformType

{
    //創建分享消息對象
    UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];
    
    //創建音樂內容對象
    UMShareMusicObject *shareObject = [UMShareMusicObject shareObjectWithTitle:@"分享標題" descr:@"分享內容描述" thumImage:[UIImage imageNamed:@"分享圖片名"]];
    //設置音樂網頁播放地址
    shareObject.musicUrl = @"http://c.y.qq.com/v8/playsong.html?songid=108782194&source=yqq#wechat_redirect";
    messageObject.shareObject = shareObject;
    
    //調用分享接口
    [[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:self completion:^(id data, NSError *error) {
        if (error) {
            NSLog(@"************Share fail with error %@*********",error);
        }else{
            NSLog(@"response data is %@",data);
        }
    }];
}
分享 圖1
分享 圖2

設置分享內容
下面我列舉幾個常用的分享內容具體參照官方給出的文檔
http://dev.umeng.com/social/ios/進階文檔#2

a.分享文本
- (void)shareTextToPlatformType:(UMSocialPlatformType)platformType
{
    //創建分享消息對象
    UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];
    //設置文本
    messageObject.text = @"社會化組件UShare將各大社交平臺接入您的應用,快速武裝App。";

    //調用分享接口
    [[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:self completion:^(id data, NSError *error) {
        if (error) {
            NSLog(@"************Share fail with error %@*********",error);
        }else{
            NSLog(@"response data is %@",data);
        }
    }];
}
b.分享圖片
- (void)shareImageToPlatformType:(UMSocialPlatformType)platformType
{
    //創建分享消息對象
    UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];

    //創建圖片內容對象
    UMShareImageObject *shareObject = [[UMShareImageObject alloc] init];
    //如果有縮略圖,則設置縮略圖
    shareObject.thumbImage = [UIImage imageNamed:@"icon"];
    [shareObject setShareImage:@"https://mobile.umeng.com/images/pic/home/social/img-1.png"];

    //分享消息對象設置分享內容對象
    messageObject.shareObject = shareObject;

    //調用分享接口
    [[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:self completion:^(id data, NSError *error) {
        if (error) {
            NSLog(@"************Share fail with error %@*********",error);
        }else{
            NSLog(@"response data is %@",data);
        }
    }];
}
c.分享圖文(新浪支持,微信/QQ僅支持圖或文本分享)
- (void)shareImageAndTextToPlatformType:(UMSocialPlatformType)platformType
{
    //創建分享消息對象
    UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];

    //設置文本
    messageObject.text = @"社會化組件UShare將各大社交平臺接入您的應用,快速武裝App。";

    //創建圖片內容對象
    UMShareImageObject *shareObject = [[UMShareImageObject alloc] init];
    //如果有縮略圖,則設置縮略圖
    shareObject.thumbImage = [UIImage imageNamed:@"icon"];
    [shareObject setShareImage:@"https://www.umeng.com/img/index/demo/1104.4b2f7dfe614bea70eea4c6071c72d7f5.jpg"];

    //分享消息對象設置分享內容對象
    messageObject.shareObject = shareObject;

    //調用分享接口
    [[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:self completion:^(id data, NSError *error) {
        if (error) {
            NSLog(@"************Share fail with error %@*********",error);
        }else{
            NSLog(@"response data is %@",data);
        }
    }];
}
d.分享網頁
- (void)shareWebPageToPlatformType:(UMSocialPlatformType)platformType
{
    //創建分享消息對象
    UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];

    //創建網頁內容對象
    UMShareWebpageObject *shareObject = [UMShareWebpageObject shareObjectWithTitle:@"分享標題" descr:@"分享內容描述" thumImage:[UIImage imageNamed:@"icon"]];
    //設置網頁地址
    shareObject.webpageUrl =@"http://mobile.umeng.com/social";

    //分享消息對象設置分享內容對象
    messageObject.shareObject = shareObject;

    //調用分享接口
    [[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:self completion:^(id data, NSError *error) {
        if (error) {
            NSLog(@"************Share fail with error %@*********",error);
        }else{
            NSLog(@"response data is %@",data);
        }
    }];
}

七、分享面板UI設置

友盟6.0+版本的分享UI相對以前版本來說不僅更加美觀,而且支持自定義,通過修改SDK中的UMSocialUI的類,能夠獲得自己想要的分享UI。具體可以參照下面這篇文章:http://www.lxweimin.com/p/7fd968d6094f

八、U-Share第三方平臺登錄集成

7.1第三方登錄的定義
  第三方登錄主要用于簡化用戶登錄流程,通過用戶擁有的微博、QQ、微信等第三方賬號進行登錄并且構建APP自己的登錄賬號體系。

7.2如何實現三方登錄
  三方登錄所添加的SDK和分享功能相同,在這里不再復述,具體工程配置、系統回調及URL scheme配置參考對應分享文檔即可 分享文檔
最終通過調用登錄接口,獲取用戶在第三方平臺的用戶ID、頭像等資料完成賬號體系的構建

7.3 三方登錄支持的平臺
  國內平臺
    微信、QQ、新浪、騰訊微博、人人網、豆瓣
  國外平臺
    Facebook、Twitter、linkedIn、Kakao

下面是登錄實現代碼:(獲取登錄微信用戶的信息,并輸出在控制臺中)

 [[UMSocialManager defaultManager] getUserInfoWithPlatform:UMSocialPlatformType_WechatSession currentViewController:nil completion:^(id result, NSError *error) {
            if (error) {
                
            } else {
                UMSocialUserInfoResponse *resp = result;
                
                // 授權信息
                NSLog(@"Wechat uid: %@", resp.uid);
                NSLog(@"Wechat openid: %@", resp.openid);
                NSLog(@"Wechat accessToken: %@", resp.accessToken);
                NSLog(@"Wechat refreshToken: %@", resp.refreshToken);
                NSLog(@"Wechat expiration: %@", resp.expiration);
                
                // 用戶信息
                NSLog(@"Wechat name: %@", resp.name);
                NSLog(@"Wechat iconurl: %@", resp.iconurl);
                NSLog(@"Wechat gender: %@", resp.gender);
                
                // 第三方平臺SDK源數據
                NSLog(@"Wechat originalResponse: %@", resp.originalResponse);
            }
        }];

關于最新版U-Share的分享和登錄集成大概的內容就寫完了,還有其他許多細節,希望讀者幫忙補充。最后如果喜歡這篇文章的話,請幫忙點下??。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,786評論 6 534
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,656評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,697評論 0 379
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,098評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,855評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,254評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,322評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,473評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,014評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,833評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,016評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,568評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,273評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,680評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,946評論 1 288
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,730評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,006評論 2 374

推薦閱讀更多精彩內容