友盟集成(九) —— UShare模塊之UShare常見問題 (六)

版本記錄

版本號 時間
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)注~~~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容