版本記錄
| 版本號 | 時間 |
|---|---|
| V1.0 | 2018.04.05 |
前言
相信很多人用過友盟,包括友盟的第三方登錄、分享以及統(tǒng)計。這里我們就分幾個模塊進行詳細的說明 —— 移動統(tǒng)計
(U - App)、網(wǎng)站統(tǒng)計(U - Web)、消息推送(U - Push)、社會化分享(U - Share)、游戲統(tǒng)計(U - Game)、互聯(lián)網(wǎng)運營數(shù)據(jù)服務(wù)(Dplus)- 多維度、一站式、精細化數(shù)據(jù)管理服務(wù)。感興趣的可以看上面幾篇。
1. 友盟集成(一) —— UShare模塊之快速集成(一)
2. 友盟集成(二) —— UShare模塊之快速集成(二)
3. 友盟集成(三) —— UShare模塊之第三方登錄(一)
4. 友盟集成(四) —— UShare模塊之進階說明之第三方平臺SDK說明(一)
5. 友盟集成(五) —— UShare模塊之進階說明之分享到第三方平臺(二)
6. 友盟集成(六) —— UShare模塊之進階說明之分享面板UI(三)
7. 友盟集成(七) —— UShare模塊之進階說明之自定義平臺(四)
8. 友盟集成(八) —— UShare模塊之進階說明之U-Share API說明(五)
UShare常見問題
1. U-Share返回錯誤碼
//平臺的失敗錯誤碼
/**
* U-Share返回錯誤類型
*/
typedef NS_ENUM(NSInteger, UMSocialPlatformErrorType) {
UMSocialPlatformErrorType_Unknow = 2000, // 未知錯誤
UMSocialPlatformErrorType_NotSupport = 2001, // 不支持(url scheme 沒配置,或者沒有配置-ObjC, 或則SDK版本不支持或則客戶端版本不支持)
UMSocialPlatformErrorType_AuthorizeFailed = 2002, // 授權(quán)失敗
UMSocialPlatformErrorType_ShareFailed = 2003, // 分享失敗
UMSocialPlatformErrorType_RequestForUserProfileFailed = 2004, // 請求用戶信息失敗
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, // 第三方錯誤
UMSocialPlatformErrorType_ProtocolNotOverride = 2013, // 對應(yīng)的 UMSocialPlatformProvider的方法沒有實現(xiàn)
UMSocialPlatformErrorType_NotUsingHttps = 2014, // 沒有用https的請求,@see UMSocialGlobal isUsingHttpsWhenShareContent
};
2. 集成SDK問題
用了U-Share v5.x版本,現(xiàn)在加入6.x編譯鏈接報錯
U-Share SDK 5.x和6.x版本不相兼容,v6.x是完全重構(gòu)的一個版本,升級到6.x時請完全移除v5.x或更早版本。
分享面板很多平臺沒顯示
這是U-Share SDK內(nèi)部處理,對于模擬器以及在設(shè)備上未安裝或不支持授權(quán)/分享的平臺應(yīng)用進行了隱藏,以增強分享體驗及解決審核App時可能被拒的問題。
3. 授權(quán)/分享跳轉(zhuǎn)與回調(diào)問題
授權(quán)或分享未跳到目標App
可能在工程中配置iOS9以上白名單缺少對應(yīng)平臺參數(shù),參考配置SSO白名單。
failed for URL: ""weibosdk://"" - error:
類似還有微信、QQ等需要打開相應(yīng)app的都會有這樣的log,在模擬器上可能出現(xiàn)此log,因為沒安裝對應(yīng)app,此條日志可以忽略。 而如果出現(xiàn)error: "This app is not allowed to query for scheme xxx",說明白名單沒有配置,參考上一個問題。
在目標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消息
在分享到第三方平臺,如QQ、微信,在某些情況下可能會收到UIKeyboardWillShowNotification消息,U-Share SDK內(nèi)部并無此消息發(fā)出。 發(fā)生的情況可能在跳轉(zhuǎn)到第三方平臺編輯頁面彈出鍵盤后或跳回App后收到,可參考以下兩種方式解決:
- 在
viewDidDisappear中移除此消息的注冊。 - 用下列代碼過濾非本控件觸發(fā)的消息。
- (void)keyboardWillShowNotification:(NSNotification *)note
{
if (!myTextField.isFirstResponder) {
return;
}
// code
}
4. 蘋果審核(ATS)及HTTPS
HTTP圖片發(fā)送失敗
由于ATS的原因,所有HTTP鏈接在SDK內(nèi)都被禁止,并提示錯誤告知非https圖片不可分享,請使用https圖片,保證ATS環(huán)境下可以順暢的進行分享操作。分享圖片方式如下: 1. 分享圖片僅適用本地圖片加載,如UIImage或NSData數(shù)據(jù)傳輸。 2. 如需使用網(wǎng)絡(luò)圖片,確保URL為HTTPS圖片鏈接,以便于U-Share SDK下載并進行分享,否則會分享失敗。
關(guān)于ATS(審核時強制應(yīng)用支持HTTPS)的問答
問:友盟分享和第三方登錄的SDK,現(xiàn)在要升級HTTPS,是否所有的都需要必須換成最新的sdk才可以?如果不升級而用原來的SDK,可以設(shè)置嗎?HTTPS協(xié)議與SDK的版本號有沒有關(guān)系? 答:這可能是多數(shù)開發(fā)者的疑惑,ATS的支持需要本地SDK將訪問地址由http調(diào)整為https前綴的鏈接才可以,無法設(shè)置,所以從U-Share 6.1開始已經(jīng)支持全部HTTPS訪問。 但目前有一個例外新浪微博的官方SDK還未全部支持ATS,在通過網(wǎng)頁進行授權(quán)依然是HTTP請求導致頁面加載失敗,請關(guān)注官方U-Share iOS SDK后續(xù)會保持跟進。
上線的應(yīng)用是否有影響
在AppStore的應(yīng)用不會有影響,也不會下架。這個變化是針對新提交審核的,也就是說,只要更新應(yīng)用,就需要支持ATS。在蘋果執(zhí)行ATS后友盟分享SDK4.x版和5.x版本分享是否可用
跟上面的問題一樣,只要在線上的應(yīng)用均不會受到影響。但如果需要更新應(yīng)用提交審核,則需要更新SDK到6.1以上版本,即現(xiàn)在全新的U-Share SDK已支持ATS。微博SDK設(shè)置redirectURL為HTTP的,是否影響審核,以及安卓是否需要同步修改
官方建議修改為前綴是https的redirectURL,并且http和https前綴的redirectURL互相兼容,不會導致不匹配而授權(quán)失敗的問題。由于微博后臺的設(shè)置無需修改,安卓客戶端也不會有影響。微信、新浪微博和QQ頭像是HTTP URL
目前第三方平臺返回的頭像鏈接依然是HTTP地址,不過U-Share SDK已經(jīng)做了兼容處理,升級到6.1.2以上版本SDK使用,開發(fā)者無需擔心獲取頭像因為ATS的原因而失敗。
5. 分享參數(shù)問題
網(wǎng)頁類型發(fā)送失敗
發(fā)送網(wǎng)頁link card形式的分享,需要設(shè)置縮略圖,如demo中的示例:
UMShareWebpageObject *shareObject = [UMShareWebpageObject shareObjectWithTitle:@"分享標題" descr:@"分享內(nèi)容描述" thumImage:[UIImage imageNamed:@"icon"]];
其中需要設(shè)定thumImage。
6. 分享面板UI
更新6.1后UI編譯錯誤
由于6.1版開始更新了全新的分享面板,所以導入形式也略有改變
- 導入文件
##import "UMSocialUIManager.h"
改為
##import <UShareUI/UShareUI.h>
- 回調(diào)block
[UMSocialUIManager showShareMenuViewInWindowWithPlatformSelectionBlock:^(UMShareMenuSelectionView *shareSelectionView, UMSocialPlatformType platformType) {
}];
接口沒變,回調(diào)參數(shù)調(diào)整為
[UMSocialUIManager showShareMenuViewInWindowWithPlatformSelectionBlock:^(UMSocialPlatformType platformType, NSDictionary *userInfo) {
}];
分享面板無法彈出
由于 1. 創(chuàng)建Xcode項目會默認添加Main.storyboard作為Main Interface(General - Deployment Info),也就是項目的主Window。 2. 如果沒使用Main.storyboard而又另外在AppDelegate中創(chuàng)建了UIWindow對象,如
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]
如果項目中同時出現(xiàn)Main Interface以及代碼創(chuàng)建UIWindow會導致分享面板無法正常彈出,解決方法是移除其一即可。如果移除了Main.storyboard,需要clean工程后再重新運行。
7. 更新Cocoapods問題
找不到UMengUShare
如果通過Cocoapods集成U-Share SDK(Cocoapods集成)出現(xiàn)更新失敗或查找失敗,如:
Unable to find a pod with name matching 'UMengUShare/Social/Wechat'
原因可能是未更新Cocoapods庫,使用pod update進行更新遠端數(shù)據(jù)庫,切記不要使用--no-repo-update參數(shù),更新Cocoapods庫時間較長,請耐心等待。
從4.x或5.x版本升級U-Share 6.0報錯library not found for xxx
由于老版本通過cocoapods集成下載接入全量的平臺,包括APOpenSDK、facebook、twitter等。在新版U-Share通過cocoapods集成可以靈活的單選平臺,沒有加入Podfile配置文件的不會下載。 可以到項目 - Build Setting - Other linker flag 查看是否有多余的庫依賴,確認后刪除即可。
cocoapods library not found for -lPods
新版cocoapods1.0鏈接庫名稱為libPods-[target_name].a,不再是libPods.a,刪除libPods.a即可。
報錯"not used in any concrete target"
Cocoapods1.0版本語法問題,需改為
target '工程target名稱' do
pod ‘cocoapods庫名'
end
以上工程target名稱需改為開發(fā)者工程內(nèi)對應(yīng)的target名。
通過cocoapods集成Linkedin領(lǐng)英
linkedin會和Cocoapods產(chǎn)生鏈接時沖突
duplicate symbol _OBJC_CLASS_$_PodsDummy_Pods
可將Pod中的PodsDummy_Pods類名修改為_PodsDummy_Podsxx
8. QQ
分享網(wǎng)頁類型失敗source code 5
檢查url中是否含有中文字符,將中文部分進行url轉(zhuǎn)碼后可正常分享。
9. 微博
微博授權(quán)頁顯示sso package error
微博SSO錯誤是項目的bundle id和在微博平臺bundle id設(shè)置的不一致導致的,必須保證字符完全匹配。
提示redirect_uri_mismatch
項目中設(shè)置的redirectURL和授權(quán)Request傳遞的回調(diào)地址(WBAuthorizeRequest.redirectURI-微博后臺設(shè)置)不一致導致的,必須保證字符完全匹配。 如
[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_Sina appKey:@"3921700954" appSecret:@"04b48b094faeb16683c32669824ebdad" redirectURL:@"http://sns.whalecloud.com/sina2/callback"];
以上redirectURL必須和微博后臺設(shè)置一致。
彈出授權(quán)窗口后瞬間消失
兩個可能 1. bundle id不一致導致 2. 檢查info.plist文件里有沒添加加URL Types,在URL Schemes里填上wb+APPKEY。
授權(quán)后沒有返回應(yīng)用
檢查info.plist里設(shè)置的URL Scheme是否正確,需要是wb+appkey的形式。
未安裝微博客戶端分享音樂、視頻的顯示問題
目前微博分享不支持在未安裝微博客戶端時分享音樂、視頻類型的內(nèi)容。已安裝客戶端可在微博客戶端編輯頁正常顯示,發(fā)送后顯示狀態(tài)可參考上面的微博 LinkCard問題。
微博(完整版)webview回調(diào)的崩潰
未安裝新浪微博客戶端時會彈出Webview進行登錄和分享,之后會回調(diào)至以下函數(shù):
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
如果用戶沒有重載此函數(shù)的話,會導致微博SDK通過Webview的回調(diào)而崩潰。 開發(fā)者需重載此方法接受系統(tǒng)回調(diào)。
10. 支付寶
支付寶返回“-4”“鑒權(quán)失敗”
檢查bundle id是否和支付寶后臺配置的bundle id一致。
后記
本篇主要講述了UShare模塊之UShare常見問題,感興趣的給個贊或者關(guān)注~~~
