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