1. 程式人生 > >用友盟社會化元件,分享到微信和新浪微博

用友盟社會化元件,分享到微信和新浪微博

最近做的APP,需要分享功能,於是試了一下友盟的社會化元件。總的感覺還不錯,雖然沒有比直接整合官方SDK簡便多少,但是後臺統計的功能不錯,所以最後還是用了。官網的文件說明已經挺詳細了,不過章節組織得有點亂,本文總結一下

獲取友盟app key

首先去友盟註冊一個app key,然後下載它的SDK。這裡要注意的是,SDK分為IDFA版和非IDFA版,前者需要設定一個預設的廣告頁,否則有可能被蘋果拒絕上架,我覺得有點風險,所以最後選的是非IDFA的版本。由於目前IDFA是唯一標識裝置的最準確手段,所以這個版本有可能在識別新使用者時不如IDFA版準確,不過我覺得可以接受

然後友盟提供了多套元件,除了最基礎的應用統計,還有社會化元件,推送元件等,我只用了它的基礎SDK和社會化SDK。app key是共通的

整合微信

包括微信好友,朋友圈,收藏

首先需要去微信開放平臺註冊應用,然後會得到app id和app secret。我之前做過微信公眾號的二次開發,對微信的這套玩法已經比較熟悉了。針對移動應用,微信開放平臺提供了登陸、分享、支付等介面,我們主要用的是分享介面,這是最基礎的介面,目前不需要認證開發者身份,只需要在平臺上註冊就可以了

得到app id和app secret之後,就可以接入了。用原生SDK和友盟SDK都差不多,iOS APP整合都離不開URL Types這一套,所以首先需要設定URL Types,填上app secret

然後就改用友盟提供的API了,不用微信原生的

#import "UMSocial.h"
#import "UMSocialWechatHandler.h"

[UMSocialData setAppKey:@"友盟的AppKey"];
[UMSocialWechatHandler setWXAppId:@"微信app id" appSecret:@"微信app secret" url:nil];

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
    return  [UMSocialSnsService handleOpenURL:url];
}

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    return  [UMSocialSnsService handleOpenURL:url];
}

以上是需要寫在AppDelegate裡的程式碼,唯一需要注意的是,setWXAppId: appSecret: url這個方法裡,url可以傳nil。因為我們後續分享出去的URL都是每個頁面特殊的,所以不在這裡填。如果這裡填了url,則會作為預設的跳轉連結
-(void) socialButtonPressed
{
    NSArray *targetSns = @[UMShareToWechatSession, UMShareToWechatTimeline, UMShareToWechatFavorite];
    
    NSString *url = @"http://xxx.com/分享的訊息點選後進入的url";
    NSString *title = @"自定義title";
    [UMSocialData defaultData].extConfig.wechatSessionData.url = url;
    [UMSocialData defaultData].extConfig.wechatTimelineData.url = url;
    [UMSocialData defaultData].extConfig.wechatFavoriteData.url = url;
    [UMSocialData defaultData].extConfig.wechatSessionData.title = title;
    [UMSocialData defaultData].extConfig.wechatFavoriteData.title = title;
    
    [UMSocialSnsService presentSnsIconSheetView:self appKey:nil shareText:@"內容文字" shareImage:[UIImage imageNamed:@"內容圖片"] shareToSnsNames:targetSns delegate:nil];
}

這裡是點選分享按鈕後的程式碼,targetSns是分享的目標,還可以按需新增其他的社交平臺,這裡我只添加了微信。然後需要分別設定聊天、朋友圈、收藏的URL,朋友圈不需要設定標題,因為分享到朋友圈的訊息沒有標題。API裡是有的,但是其實無效

另外如果使用者的裝置上沒有裝微信,那麼分享介面也就不會出現微信的圖示,否則的話蘋果會認為是誘導下載,而拒絕上架

整合新浪微博

感覺整合新浪微博更麻煩一點,因為整合微信基本通過程式碼就完成了,而新浪微博需要在3個地方配置,比較零散。可能是因為我沒有用新浪微博的原生SDK做過接入,所以直接用友盟的SDK感覺不是很能把握

首先當然也是要去新浪平臺註冊應用,拿到app key和app secret。然後配置URL Types,不過這裡用的app key不是剛才我們自己去新浪申請的app key,而是友盟的app key

然後需要在新浪的管理後臺配置OAuth的回撥地址,根據友盟的文件,把安全域名配置為sns.whalecloud.com,回撥地址配置成http://sns.whalecloud.com/sina2/callback,這也是讓我覺得比較奇怪的地方,按理說應該是配置成我們應用自己的地址才比較合理。在新浪的文件裡找了半天,也沒看到這個地址需要實現什麼邏輯,就先按友盟介紹的來吧

然後是程式碼:

#import "UMSocial.h"
#import "UMSocialSinaHandler.h"

[UMSocialData setAppKey:@"xxxx"];
[UMSocialSinaHandler openSSOWithRedirectURL:@"http://sns.whalecloud.com/sina2/callback"];
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
    return  [UMSocialSnsService handleOpenURL:url];
}

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    return  [UMSocialSnsService handleOpenURL:url];
}

模式和前面接入微信相當類似,也看出使用第三方元件的好處,至少handleOpenURL和openURL不需要寫兩遍了

然後是分享的程式碼:

NSArray *targetSns = @[UMShareToSina];
    
[UMSocialSnsService presentSnsIconSheetView:self appKey:nil shareText:@"測試文字\nhttp://www.baidu.com" shareImage:[UIImage imageNamed:@"image_placeholder"] shareToSnsNames:targetSns delegate:nil];

這裡的區別是不需要設定url和title了,因為分享到微博的模式不同於微信,沒有顯示title和url的地方,這個是平臺差異,不是使用友盟的原因,即使用新浪原生的SDK,也是一樣做不到。所以我希望在分享的內容裡新增一個連結,就需要直接寫在shareText裡

經過上面的配置,就可以把內容分享到新浪微博了。這裡如果使用者裝置上有微博,就會使用SSO直接分享;如果沒有安裝,則會跳轉到web頁面使用OAuth授權。這主要是因為新浪微博為第三方應用提供了OAuth授權的方式,而微信現在貌似只對公眾號提供了OAuth接入,移動應用還是隻能通過應用跳轉

但是現在有個問題,我發現我前面在新浪申請的app key和app secret從頭到尾就沒用過,這明顯是不合理的。果然分享出去的微博,來源都是“友盟社會化元件”,後來找了一圈,發現還需要在友盟的後臺配置一下自己的app key和app secret,然後就OK了

高階功能

除了前面的最基本的分享,還可以自定義分享頁面的樣式(基礎的方式是友盟已經提供了XIB和彈出方式),也可以呼叫更底層的直接分享介面(無頁面),另外還有一些delegate方法,有需要的話可以自行實現


相關推薦

社會化元件分享

最近做的APP,需要分享功能,於是試了一下友盟的社會化元件。總的感覺還不錯,雖然沒有比直接整合官方SDK簡便多少,但是後臺統計的功能不錯,所以最後還是用了。官網的文件說明已經挺詳細了,不過章節組織得有點亂,本文總結一下 獲取友盟app key 首先去友盟註冊一個app ke

解決UmengSDK社會化分享過程中,QQ,分享不成功的問題

按照UmengSDK的demo進行整合後,碰到的幾個問題 一、點選qq或空間分享,出現應用無響應(ANR)的情況。 解決方法:查查是否分享的圖片引數是否已經設定,沒有設定會出現ANR,設定後可以正常分享。title、url、content等引數是否設定正確 二、微信分享不成

unity3d利用sharesdk分享內容至、qq空間等國內主流社交平臺(ios篇)

大家在玩遊戲時,通常都會看到分享的功能,最常見的是分享到微信朋友圈、qq空間或者新浪微博,產品經理通常稱這個功能模組為社會化。那這個功能在unity3d製作的遊戲中怎麼做到的呢?以前的老做法是按照對應的ios、安卓平臺、在微信or新浪微博上下載對應的sdk、按照其說明文件

實現QQ、百度第三方登錄(Android Studio)

wiki protocol super cli 路徑 參考 syn jar包 all 前言: 對於大多數的APP都有第三方登錄這個功能,自己也做過幾次,最近又有一個新項目用到了第三方登錄,所以特意總結了一下關於第三方登錄的實現,並拿出來與大家一同分享; 各大開放平臺註冊

獲取等apk簽名的方法

1、Eclipse開發工具中獲取: 匯出簽名包時的最後一步(將該MD5值複製出來,按照“ 去掉冒號(:),大寫轉小寫 ”的規則裝換,此時字串就是簽名): 2、使用微信或者新浪微博開放平臺上的MD

社會化分享_如何更改分享來源授權頁面的社會化元件欄位

如果在友盟後臺沒有切換為自己申請的appkey,那麼在授權頁面及分享來源都會顯示友盟社會化元件,如下圖:     修改方法就是在第三方平臺註冊自己的應用(如修改新浪分享來源則在新浪微博開放平臺註冊),獲取appkey及APPsecret,繫結在友盟主站後臺即可,具體位置:登

學習筆記之——社會化元件精簡版整合qq

        用過友盟社會化元件SDK的小夥伴們肯定都知道友盟在推出精簡版SDK之前jar包是很大的,在小型專案使用還沒什麼大問題,但是如果公司的專案本身就比較大型那就非常容易出現Dex方法數量超過65536的現象了。但是很開心的是友盟在2016年9月23號推出了Andr

修改社會化元件

怎樣在友盟分享成功後修改微博簽名 先在微博註冊應用,獲得appkey後,在友盟後臺更改預設的微博appkey,進行繫結配置。 新浪微博開放平臺應用註冊步驟:1. 在新浪開放平臺後臺建立移動應用:http://open.weibo.com -> 應用開發 -> 移

分享到空間或的程式碼

<div class="bdsharebuttonbox"> <a href="#" class="bds_more" data-cmd="more"></a> <a title="分享到QQ空間" href="#" class="

php 實現分享到QQ空間

//分享到新浪微博//分享到新浪微博 $('#blog').click(function(){ window.sharetitle = '<

JS頁面一鍵分享QQ空間、、豆瓣等小工具

效果大體如下, 程式碼裡面的js是引用的網路中其他頁面工具js,如果想剔除掉外部依賴,可自己下載,如下幾個url的js檔案,copy到本地修改下即可。 <!DOCTYPE html>

HBuilder webApp開發(七)/QQ//騰訊分享

HBuilder是支援微信分享(好友和朋友圈),QQ分享,新浪微博和騰訊微博分享。 但是在使用的過程中,官方給的文件似乎很坑爹。 《分享外掛配置》 《分享外掛開發指南》 都是2014年7月發表的文件,後期也沒看見更新說明;有使用者過來提問,就都給引導去看

Cocos2dx 接入社會化分享-分享

需要準備的材料: 1.友盟Appkey 如果你之前已經在友盟註冊了應用,並獲取到了Appkey,可以繼續使用它. 如果你尚未在友盟註冊開發者賬號,需要先註冊,註冊之後登入你的賬號,點選新增新應用,填寫完應用基本資訊後,將進入”下載SDK並新增程式碼”頁面,此頁面即可得到Appk

iOS 支付SDK與分享兩者同時整合時出現的問題與解決之路。

這兩天改版一箇舊的APP,要舊貌換新顏,拿到app後進行編譯,一直報下面的錯誤。 報不認識的符號名PayReq錯誤。奇怪,啥也沒動就這樣,真不知道給的包是不是本來就是個報錯的工程。 不管怎樣,要對它修改就先要跑起來啊。   根據錯誤提示,判斷是libwec

iOS 支付SDK與分享兩者同時集成時出現的問題與解決之路。

說明 圖片 根據 red googl 包含 沒有 終端 手動添加 這兩天改版一個舊的APP,要舊貌換新顏,拿到app後進行編譯,一直報下面的錯誤。 報不認識的符號名PayReq錯誤。奇怪,啥也沒動就這樣,真不知道給的包是不是本來就是個報錯的工程。 不管怎樣,要對它修改就先要

Android整合社會化分享功能----關鍵在分享(MD5的處理)

Android整合友盟社會化分享功能----關鍵在微信分享(MD5的處理:Window---》Preference---Android---》build:去掉冒號,大寫轉小寫) MD5:B8:DB:FB:89:F0:F0:FC:7A:DB:10:D7:B4:AB:D6:0

使用社會化分享元件實現第三方登入

產品概述 Android U-share 6.0sdk是在5.0+的基礎上做了進一步的優化,降低了包的大小,對於三方的jar提供了更多選擇(精簡版,原生版),並提供了更多實用的介面,方便了使用者的整合和升級。同時6.0的版本相容5.0+的版本,老使用者,只

社會化分享之自定義內容分享,,豆瓣

以前移動端要做分享的時候一般是兩種方法,要麼使用Intent呼叫安卓系統自帶的分享功能介面,這是最簡單快捷的方法, 要麼就自己去QQ微信和各個微博等社交網站申請開發者ID和key,然後在看他們的官方文件,在手機上逐個去實現.所以幾年前應用內建的分享一般只支援主流的幾個社

使用社會化分享安卓android版SDK分享純圖片到

本人使用的其實是友盟的Cocos2d-x安卓版。普通安卓版使用方式稍有不同,但是設定分享內容的介面是一樣的。友盟官方文件中提到過他們支援微信純圖片分享,就是分享一張純圖片,而非一條圖文連結,到微信朋友圈,點選之後變大圖的那種。但是他們並未說明如何設定,預設設定是分享一條圖文

試用SDK實現Android分享朋友圈

社會 mis gettext 視頻 blog test cte widget mod 社會化分享是眼下必學且火熱的功能。之前有寫第三方登錄,那僅僅是社會化分享的一部分。今天來玩玩分享微信朋友圈。 為了方便操作,還是依照步驟寫。 一,註冊 註冊應用已經在