我们公司的社交化分享采用友盟分享 自定义分享面板,中间的一些坑记录在案,为了防止别的小伙伴进坑,页留作自己以后作为参考 ,有问题可发我邮箱zth0218@126.com
1. 下载友盟SDK并添加必要的依赖库
这里不再赘述,参考地址 http://dev.umeng.com/social/ios/detail-share, 关于一些友盟的一些东西大家自己去补充吧
2. 自定义的面板的实现
采用自己写的一个类,懒得写的可以拿来直接用 github地址 https://github.com/ahao1011/shareView
3. 项目里的一些配置
3.1 AppDelegate.m
引入头文件#import"UMSocial.h"
#pragma mark - 友盟
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
MYLog(@"%@", url);
return [UMSocialSnsService handleOpenURL:url];
}
/**
这里处理新浪微博SSO授权之后跳转回来,和微信分享完成之后跳转回来
*/
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
BOOL result = [UMSocialSnsService handleOpenURL:url wxApiDelegate:nil];;
MYLog(@"%@",url);
if (result == FALSE) {
//调用其他SDK,例如支付宝SDK等
}
return result;
}
/**
这里处理新浪微博SSO授权进入新浪微博客户端后进入后台,再返回原来应用
*/
- (void)applicationDidBecomeActive:(UIApplication *)application
{
[UMSocialSnsService applicationDidBecomeActive];
}
}3.2 在需要分享的控制器内引入以下头文件
#import "UMSocial.h"
#import "ShareView.h"
viewDidLoad中建立ShareView的实例
_share= [[ShareView alloc]initWithFrame:CGRectMake(0, K_ScreenHeight, K_ScreenWidth, K_ScreenHeight*0.45)];
_share.delegate = self;
在需要它展现出来的地方代用 [_share appear];
遵循ShareViewDelegate和UMSocialUIDelegate. 并粘帖一下方法
#pragma mark - ShareViewDelegate
- (void)ShareViewBtnDidiClickWithTag:(NSString *)snsName{
[_share hidden];
//设置分享内容,和回调对象
NSString *shareText = @"特付宝客户端下载地址 http://dwz.cn/2hbCBD";
UIImage *shareImage = [UIImage imageNamed:@"Icon-60"];
[[UMSocialControllerService defaultControllerService]
setShareText:shareText
shareImage:shareImage
socialUIDelegate:self];
UMSocialSnsPlatform *snsPlatform = [UMSocialSnsPlatformManager getSocialPlatformWithName:snsName];
snsPlatform.snsClickHandler(self,[UMSocialControllerService defaultControllerService],YES);
}
#pragma mark - UMSocialUIDelegate
-(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response
{
//根据`responseCode`得到发送结果,如果分享成功
if(response.responseCode == UMSResponseCodeSuccess)
{
//得到分享到的微博平台名
MYLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]);
}
}
4.配置软件间的跳转
5.大坑注意避让
iOS9.0之后有了白名单一项,如不在info.plist添加白名单的话则无法完成跳转,将以下信息添加到info.plist文件中
<key>LSApplicationQueriesSchemes</key>
<array>
<string>wechat</string>
<string>weixin</string>
<string>sinaweibohd</string>
<string>sinaweibo</string>
<string>sinaweibosso</string>
<string>weibosdk</string>
<string>weibosdk2.5</string>
<string>mqqapi</string>
<string>mqq</string>
<string>mqqOpensdkSSoLogin</string>
<string>mqqconnect</string>
<string>mqqopensdkdataline</string>
<string>mqqopensdkgrouptribeshare</string>
<string>mqqopensdkfriend</string>
<string>mqqopensdkapi</string>
<string>mqqopensdkapiV2</string>
<string>mqqopensdkapiV3</string>
<string>mqzoneopensdk</string>
<string>wtloginmqq</string>
<string>wtloginmqq2</string>
<string>mqqwpa</string>
<string>mqzone</string>
<string>mqzonev2</string>
<string>mqzoneshare</string>
<string>wtloginqzone</string>
<string>mqzonewx</string>
<string>mqzoneopensdkapiV2</string>
<string>mqzoneopensdkapi19</string>
<string>mqzoneopensdkapi</string>
<string>mqqbrowser</string>
<string>mttbrowser</string>
<string>renrenios</string>
<string>renrenapi</string>
<string>renren</string>
<string>renreniphone</string>
<string>yixin</string>
<string>yixinopenapi</string>
<string>instagram</string>
<string>whatsapp</string>
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
</array>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSAppTransportSecurity</key>