用的各平臺原生的分享SDK,未采用第三方集成的SDK(例如ShareSDK、友盟U-Share等)。
原因有三:
- 不想暴露自己的AppKey、AppID等信息給第三方;
- 第三方集成的原生SDK可能不是最新的,或者是排版不對;
- 遇到奇怪問題的時候,于第三方客服溝通,有時會解決不了;
注意事項:
- 最好是先注冊好賬號,申請相應的AppKey或AppID;
- IOS的坑比較小,稍微注意一下就好;
1. SDK相關文件配置
- 下載相關SDK,將SDK文件放到對應的IOS的lib文件夾(按自己項目的lib文件夾來)下,如下圖:
并在項目配置中的Build Settings --> Search Paths設置好Header Search Paths和Library Search Paths,如下圖:
- 配置中的Build Phases --> Link Binary With Libraries,設置好要添加的庫(文檔中有提到,沒提到的可以看官方Demo里面的設置)
注意:xcode8自帶的庫現在都是以 .tbd
結尾,而不是.dylib
。
注意:
- 新浪微博中有個
WeiboSDK.bundle
(當沒有新浪微博客戶端時,會調用SDK的瀏覽器,這個就是瀏覽器要用到的資源),這里面是新浪微博的圖片資源文件,一定要放在新浪微博能找得到的地方(mainBundle文件夾等,按自己的項目來),否則會出現閃退現象。 - 上圖中有個
MOBFoundation.framework
,主要是微信來剪裁縮略圖。github地址:點我跳轉
- 配置中的Info,設置好相關白名單、https、URL_Schemes等配置
(1)配置白名單
(2)配置https
(3)配置URL_Schemes
2. 編寫自己需要分享的代碼
-
微信 和微博主要結構如下:
微信:參照官方Demo,復制需要的文件
<u>注意:設置縮略圖時,要保證縮略圖的大小<=32KB</u>
WXApiManager.h、WXApiManager.mm,主要功能:接收分享回調
WXMediaMessage.h、WXMediaMessage.m,主要更能:構造發送媒體參數
SendMessageToWXReq.h、SendMessageToWXReq.m,主要功能:構造發送(SendMessageToWXReq)參數
WXApiRequestHandler.h、WXApiRequestHandler.m,主要功能:發送構造好的SendMessageToWXReq分享請求新浪微博:參照微信,從官方Demo復制需要的代碼
SinaWeiboApiManager.h、SinaWeiboApiManager.mm,主要功能:接收分享回調
SendMessageToSinaWeibo.h、SendMessageToSinaWeibo.mm,主要功能:構造發送參數,及發送分享請求-
AppDelegate.m
#import "SinaWeiboApiManager.h" #import "WXApiManager.h" //在這個函數里注冊你申請的各種Key,新浪的是AppKey,微信是AppID - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//wechat
//向微信注冊
[WXApi registerApp:@"wx8888888888888888" withDescription:@"ShareDemo"];
//向微信注冊支持的文件類型
UInt64 typeFlag = MMAPP_SUPPORT_TEXT | MMAPP_SUPPORT_PICTURE | MMAPP_SUPPORT_LOCATION | MMAPP_SUPPORT_VIDEO |MMAPP_SUPPORT_AUDIO | MMAPP_SUPPORT_WEBPAGE | MMAPP_SUPPORT_DOC | MMAPP_SUPPORT_DOCX | MMAPP_SUPPORT_PPT | MMAPP_SUPPORT_PPTX | MMAPP_SUPPORT_XLS | MMAPP_SUPPORT_XLSX | MMAPP_SUPPORT_PDF;
[WXApi registerAppSupportContentFlag:typeFlag];
//sinaweibo
//新浪微博初始化
[WeiboSDK registerApp:@"888888888"];
}
//添加分享回來的回調
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
[WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];
[WeiboSDK handleOpenURL:url delegate:[SinaWeiboApiManager sharedManager]];
return YES;
}
-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options
{
[WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];
[WeiboSDK handleOpenURL:url delegate:[SinaWeiboApiManager sharedManager]];
return YES;
}
```
3. 添加寫好的文件到配置Build Phases --> Complie Sources
總結:
總的來說IOS的分享坑很少,基本沒有,只要注意下微信的縮略圖的大小,保證小于32KB,就不會出現什么大問題;還有就是新浪微博的WeiboSDK.bundle
要放對位置,其他的只要按照上面的配置來,就沒什么大問題。
可能出現的問題:
- 點擊微信分享,閃一下就退回到應用。
有以下情況會造成這種現象:
(1)縮略圖的大小>32kb;
(2)初始化和配置的AppID和申請的不一樣,改正好后,最好刪除微信再試; - 點擊新浪微博分享閃退。是
WeiboSDK.bundle
沒放對位置 - 點擊新浪微博分享,閃一下退回到應用。
有以下情況會造成這種現象:
(1)沒有配置白名單、以及https;
(1)初始化和配置的AppKey和申請的不一樣;