用的各平台原生的分享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和申请的不一样;
网友评论