版本記錄
版本號(hào) | 時(shí)間 |
---|---|
V1.0 | 2018.04.05 |
前言
相信很多人用過(guò)友盟,包括友盟的第三方登錄、分享以及統(tǒng)計(jì)。這里我們就分幾個(gè)模塊進(jìn)行詳細(xì)的說(shuō)明 —— 移動(dòng)統(tǒng)計(jì)
(U - App)
陈醒、網(wǎng)站統(tǒng)計(jì)(U - Web)
、消息推送(U - Push)
瞧甩、社會(huì)化分享(U - Share)
钉跷、游戲統(tǒng)計(jì)(U - Game)
、互聯(lián)網(wǎng)運(yùn)營(yíng)數(shù)據(jù)服務(wù)(Dplus)
- 多維度肚逸、一站式爷辙、精細(xì)化數(shù)據(jù)管理服務(wù)。感興趣的可以看上面幾篇朦促。
1. 友盟集成(一) —— UShare模塊之快速集成(一)
2. 友盟集成(二) —— UShare模塊之快速集成(二)
3. 友盟集成(三) —— UShare模塊之第三方登錄(一)
4. 友盟集成(四) —— UShare模塊之進(jìn)階說(shuō)明之第三方平臺(tái)SDK說(shuō)明(一)
5. 友盟集成(五) —— UShare模塊之進(jìn)階說(shuō)明之分享到第三方平臺(tái)(二)
6. 友盟集成(六) —— UShare模塊之進(jìn)階說(shuō)明之分享面板UI(三)
7. 友盟集成(七) —— UShare模塊之進(jìn)階說(shuō)明之自定義平臺(tái)(四)
8. 友盟集成(八) —— UShare模塊之進(jìn)階說(shuō)明之U-Share API說(shuō)明(五)
UShare常見(jiàn)問(wèn)題
1. U-Share返回錯(cuò)誤碼
//平臺(tái)的失敗錯(cuò)誤碼
/**
* U-Share返回錯(cuò)誤類型
*/
typedef NS_ENUM(NSInteger, UMSocialPlatformErrorType) {
UMSocialPlatformErrorType_Unknow = 2000, // 未知錯(cuò)誤
UMSocialPlatformErrorType_NotSupport = 2001, // 不支持(url scheme 沒(méi)配置膝晾,或者沒(méi)有配置-ObjC, 或則SDK版本不支持或則客戶端版本不支持)
UMSocialPlatformErrorType_AuthorizeFailed = 2002, // 授權(quán)失敗
UMSocialPlatformErrorType_ShareFailed = 2003, // 分享失敗
UMSocialPlatformErrorType_RequestForUserProfileFailed = 2004, // 請(qǐng)求用戶信息失敗
UMSocialPlatformErrorType_ShareDataNil = 2005, // 分享內(nèi)容為空
UMSocialPlatformErrorType_ShareDataTypeIllegal = 2006, // 分享內(nèi)容不支持
UMSocialPlatformErrorType_CheckUrlSchemaFail = 2007, // schemaurl fail
UMSocialPlatformErrorType_NotInstall = 2008, // 應(yīng)用未安裝
UMSocialPlatformErrorType_Cancel = 2009, // 取消操作
UMSocialPlatformErrorType_NotNetWork = 2010, // 網(wǎng)絡(luò)異常
UMSocialPlatformErrorType_SourceError = 2011, // 第三方錯(cuò)誤
UMSocialPlatformErrorType_ProtocolNotOverride = 2013, // 對(duì)應(yīng)的 UMSocialPlatformProvider的方法沒(méi)有實(shí)現(xiàn)
UMSocialPlatformErrorType_NotUsingHttps = 2014, // 沒(méi)有用https的請(qǐng)求,@see UMSocialGlobal isUsingHttpsWhenShareContent
};
2. 集成SDK問(wèn)題
用了U-Share v5.x版本务冕,現(xiàn)在加入6.x編譯鏈接報(bào)錯(cuò)
U-Share SDK 5.x和6.x版本不相兼容血当,v6.x是完全重構(gòu)的一個(gè)版本,升級(jí)到6.x時(shí)請(qǐng)完全移除v5.x或更早版本禀忆。
分享面板很多平臺(tái)沒(méi)顯示
這是U-Share SDK內(nèi)部處理臊旭,對(duì)于模擬器以及在設(shè)備上未安裝或不支持授權(quán)/分享的平臺(tái)應(yīng)用進(jìn)行了隱藏,以增強(qiáng)分享體驗(yàn)及解決審核App時(shí)可能被拒的問(wèn)題箩退。
3. 授權(quán)/分享跳轉(zhuǎn)與回調(diào)問(wèn)題
授權(quán)或分享未跳到目標(biāo)App
可能在工程中配置iOS9以上白名單缺少對(duì)應(yīng)平臺(tái)參數(shù)离熏,參考配置SSO白名單。
failed for URL: ""weibosdk://"" - error:
類似還有微信戴涝、QQ等需要打開(kāi)相應(yīng)app的都會(huì)有這樣的log撤奸,在模擬器上可能出現(xiàn)此log,因?yàn)闆](méi)安裝對(duì)應(yīng)app喊括,此條日志可以忽略胧瓜。 而如果出現(xiàn)error: "This app is not allowed to query for scheme xxx",說(shuō)明白名單沒(méi)有配置郑什,參考上一個(gè)問(wèn)題府喳。
在目標(biāo)App授權(quán)或分享后未跳轉(zhuǎn)回原App
未配置URL Types,參考添加URL Types蘑拯。
授權(quán)或分享結(jié)束后未回調(diào)數(shù)據(jù)
檢查系統(tǒng)回調(diào)函數(shù)钝满,參考設(shè)置系統(tǒng)回調(diào)。
跳轉(zhuǎn)收到UIKeyboardWillShow消息
在分享到第三方平臺(tái)申窘,如QQ弯蚜、微信,在某些情況下可能會(huì)收到UIKeyboardWillShowNotification
消息剃法,U-Share SDK內(nèi)部并無(wú)此消息發(fā)出碎捺。 發(fā)生的情況可能在跳轉(zhuǎn)到第三方平臺(tái)編輯頁(yè)面彈出鍵盤后或跳回App后收到,可參考以下兩種方式解決:
- 在
viewDidDisappear
中移除此消息的注冊(cè)。 - 用下列代碼過(guò)濾非本控件觸發(fā)的消息收厨。
- (void)keyboardWillShowNotification:(NSNotification *)note
{
if (!myTextField.isFirstResponder) {
return;
}
// code
}
4. 蘋果審核(ATS)及HTTPS
HTTP圖片發(fā)送失敗
由于ATS的原因晋柱,所有HTTP鏈接在SDK內(nèi)都被禁止,并提示錯(cuò)誤告知非https圖片不可分享诵叁,請(qǐng)使用https圖片雁竞,保證ATS環(huán)境下可以順暢的進(jìn)行分享操作。分享圖片方式如下: 1. 分享圖片僅適用本地圖片加載拧额,如UIImage或NSData數(shù)據(jù)傳輸碑诉。 2. 如需使用網(wǎng)絡(luò)圖片,確保URL為HTTPS圖片鏈接侥锦,以便于U-Share SDK下載并進(jìn)行分享联贩,否則會(huì)分享失敗。
關(guān)于ATS(審核時(shí)強(qiáng)制應(yīng)用支持HTTPS)的問(wèn)答
問(wèn):友盟分享和第三方登錄的SDK捎拯,現(xiàn)在要升級(jí)HTTPS泪幌,是否所有的都需要必須換成最新的sdk才可以?如果不升級(jí)而用原來(lái)的SDK署照,可以設(shè)置嗎祸泪?HTTPS協(xié)議與SDK的版本號(hào)有沒(méi)有關(guān)系? 答:這可能是多數(shù)開(kāi)發(fā)者的疑惑建芙,ATS的支持需要本地SDK將訪問(wèn)地址由http調(diào)整為https前綴的鏈接才可以没隘,無(wú)法設(shè)置,所以從U-Share 6.1開(kāi)始已經(jīng)支持全部HTTPS訪問(wèn)禁荸。 但目前有一個(gè)例外新浪微博的官方SDK還未全部支持ATS右蒲,在通過(guò)網(wǎng)頁(yè)進(jìn)行授權(quán)依然是HTTP請(qǐng)求導(dǎo)致頁(yè)面加載失敗,請(qǐng)關(guān)注官方U-Share iOS SDK后續(xù)會(huì)保持跟進(jìn)赶熟。
上線的應(yīng)用是否有影響
在AppStore的應(yīng)用不會(huì)有影響瑰妄,也不會(huì)下架。這個(gè)變化是針對(duì)新提交審核的映砖,也就是說(shuō)间坐,只要更新應(yīng)用,就需要支持ATS邑退。在蘋果執(zhí)行ATS后友盟分享SDK4.x版和5.x版本分享是否可用
跟上面的問(wèn)題一樣竹宋,只要在線上的應(yīng)用均不會(huì)受到影響。但如果需要更新應(yīng)用提交審核地技,則需要更新SDK到6.1以上版本蜈七,即現(xiàn)在全新的U-Share SDK已支持ATS。微博SDK設(shè)置redirectURL為HTTP的莫矗,是否影響審核飒硅,以及安卓是否需要同步修改
官方建議修改為前綴是https的redirectURL砂缩,并且http和https前綴的redirectURL互相兼容,不會(huì)導(dǎo)致不匹配而授權(quán)失敗的問(wèn)題狡相。由于微博后臺(tái)的設(shè)置無(wú)需修改梯轻,安卓客戶端也不會(huì)有影響食磕。微信尽棕、新浪微博和QQ頭像是HTTP URL
目前第三方平臺(tái)返回的頭像鏈接依然是HTTP地址,不過(guò)U-Share SDK已經(jīng)做了兼容處理彬伦,升級(jí)到6.1.2以上版本SDK使用滔悉,開(kāi)發(fā)者無(wú)需擔(dān)心獲取頭像因?yàn)锳TS的原因而失敗。
5. 分享參數(shù)問(wèn)題
網(wǎng)頁(yè)類型發(fā)送失敗
發(fā)送網(wǎng)頁(yè)link card形式的分享单绑,需要設(shè)置縮略圖回官,如demo中的示例:
UMShareWebpageObject *shareObject = [UMShareWebpageObject shareObjectWithTitle:@"分享標(biāo)題" descr:@"分享內(nèi)容描述" thumImage:[UIImage imageNamed:@"icon"]];
其中需要設(shè)定thumImage。
6. 分享面板UI
更新6.1后UI編譯錯(cuò)誤
由于6.1版開(kāi)始更新了全新的分享面板搂橙,所以導(dǎo)入形式也略有改變
- 導(dǎo)入文件
##import "UMSocialUIManager.h"
改為
##import <UShareUI/UShareUI.h>
- 回調(diào)block
[UMSocialUIManager showShareMenuViewInWindowWithPlatformSelectionBlock:^(UMShareMenuSelectionView *shareSelectionView, UMSocialPlatformType platformType) {
}];
接口沒(méi)變歉提,回調(diào)參數(shù)調(diào)整為
[UMSocialUIManager showShareMenuViewInWindowWithPlatformSelectionBlock:^(UMSocialPlatformType platformType, NSDictionary *userInfo) {
}];
分享面板無(wú)法彈出
由于 1. 創(chuàng)建Xcode項(xiàng)目會(huì)默認(rèn)添加Main.storyboard
作為Main Interface(General - Deployment Info)
,也就是項(xiàng)目的主Window区转。 2. 如果沒(méi)使用Main.storyboard而又另外在AppDelegate中創(chuàng)建了UIWindow對(duì)象苔巨,如
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]
如果項(xiàng)目中同時(shí)出現(xiàn)Main Interface以及代碼創(chuàng)建UIWindow會(huì)導(dǎo)致分享面板無(wú)法正常彈出,解決方法是移除其一即可废离。如果移除了Main.storyboard侄泽,需要clean工程后再重新運(yùn)行。
7. 更新Cocoapods問(wèn)題
找不到UMengUShare
如果通過(guò)Cocoapods集成U-Share SDK(Cocoapods集成)出現(xiàn)更新失敗或查找失敗蜻韭,如:
Unable to find a pod with name matching 'UMengUShare/Social/Wechat'
原因可能是未更新Cocoapods庫(kù)悼尾,使用pod update進(jìn)行更新遠(yuǎn)端數(shù)據(jù)庫(kù),切記不要使用--no-repo-update參數(shù)肖方,更新Cocoapods庫(kù)時(shí)間較長(zhǎng)闺魏,請(qǐng)耐心等待。
從4.x或5.x版本升級(jí)U-Share 6.0報(bào)錯(cuò)library not found for xxx
由于老版本通過(guò)cocoapods集成下載接入全量的平臺(tái)俯画,包括APOpenSDK舷胜、facebook、twitter等活翩。在新版U-Share通過(guò)cocoapods集成可以靈活的單選平臺(tái)烹骨,沒(méi)有加入Podfile配置文件的不會(huì)下載。 可以到項(xiàng)目 - Build Setting - Other linker flag 查看是否有多余的庫(kù)依賴材泄,確認(rèn)后刪除即可沮焕。
cocoapods library not found for -lPods
新版cocoapods1.0
鏈接庫(kù)名稱為libPods-[target_name].a
除秀,不再是libPods.a
瘸羡,刪除libPods.a即可。
報(bào)錯(cuò)"not used in any concrete target"
Cocoapods1.0版本語(yǔ)法問(wèn)題,需改為
target '工程target名稱' do
pod ‘cocoapods庫(kù)名'
end
以上工程target名稱需改為開(kāi)發(fā)者工程內(nèi)對(duì)應(yīng)的target名魁巩。
通過(guò)cocoapods集成Linkedin領(lǐng)英
linkedin
會(huì)和Cocoapods
產(chǎn)生鏈接時(shí)沖突
duplicate symbol _OBJC_CLASS_$_PodsDummy_Pods
可將Pod中的PodsDummy_Pods
類名修改為_PodsDummy_Podsxx
8. QQ
分享網(wǎng)頁(yè)類型失敗source code 5
檢查url中是否含有中文字符急灭,將中文部分進(jìn)行url轉(zhuǎn)碼后可正常分享。
9. 微博
微博授權(quán)頁(yè)顯示sso package error
微博SSO錯(cuò)誤是項(xiàng)目的bundle id
和在微博平臺(tái)bundle id設(shè)置的不一致導(dǎo)致的谷遂,必須保證字符完全匹配葬馋。
提示redirect_uri_mismatch
項(xiàng)目中設(shè)置的redirectURL
和授權(quán)Request傳遞的回調(diào)地址(WBAuthorizeRequest.redirectURI-微博后臺(tái)設(shè)置)不一致導(dǎo)致的,必須保證字符完全匹配肾扰。 如
[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_Sina appKey:@"3921700954" appSecret:@"04b48b094faeb16683c32669824ebdad" redirectURL:@"http://sns.whalecloud.com/sina2/callback"];
以上redirectURL必須和微博后臺(tái)設(shè)置一致畴嘶。
彈出授權(quán)窗口后瞬間消失
兩個(gè)可能 1. bundle id
不一致導(dǎo)致 2. 檢查info.plist文件里有沒(méi)添加加URL Types,在URL Schemes
里填上wb+APPKEY
集晚。
授權(quán)后沒(méi)有返回應(yīng)用
檢查info.plist
里設(shè)置的URL Scheme
是否正確窗悯,需要是wb+appkey
的形式。
未安裝微博客戶端分享音樂(lè)偷拔、視頻的顯示問(wèn)題
目前微博分享不支持在未安裝微博客戶端時(shí)分享音樂(lè)蒋院、視頻類型的內(nèi)容。已安裝客戶端可在微博客戶端編輯頁(yè)正常顯示莲绰,發(fā)送后顯示狀態(tài)可參考上面的微博 LinkCard問(wèn)題欺旧。
微博(完整版)webview回調(diào)的崩潰
未安裝新浪微博客戶端時(shí)會(huì)彈出Webview進(jìn)行登錄和分享,之后會(huì)回調(diào)至以下函數(shù):
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
如果用戶沒(méi)有重載此函數(shù)的話钉蒲,會(huì)導(dǎo)致微博SDK通過(guò)Webview的回調(diào)而崩潰切端。 開(kāi)發(fā)者需重載此方法接受系統(tǒng)回調(diào)。
10. 支付寶
支付寶返回“-4”“鑒權(quán)失敗”
檢查bundle id是否和支付寶后臺(tái)配置的bundle id一致顷啼。
后記
本篇主要講述了UShare模塊之UShare常見(jiàn)問(wèn)題踏枣,感興趣的給個(gè)贊或者關(guān)注~~~