友盟分享使用及遇坑总结
一.获取友盟Appkey
如果你之前已经在友盟注册了应用,并获取到了Appkey,可以继续使用它.
如果你尚未在友盟注册开发者账号,需要先注册,注册之后登录你的账号,点击添加新应用,填写完应用基本信息后,将进入"下载SDK并添加代码"页面,此页面即可得到Appkey。
二.下载并安装SDK
~ 下载引入友盟分享SDK
~ 添加代码和资源引用
import "UMSocial.h"
#import "UMSocialSinaSSOHandler.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 使用友盟
[self useUMengSocialData];
return YES;
}
- (void)useUMengSocialData {
// 设置友盟AppKey
[UMSocialData setAppKey:UMengAppKey];
//第一个参数为新浪appkey,第二个参数为新浪secret,第三个参数是新浪微博回调地址,这里必须要和你在新浪微博后台设置的回调地址一致。
[UMSocialSinaSSOHandler openNewSinaSSOWithAppKey:WBShareAppKey
secret:WBShareAppSecret
RedirectURL:@"http://sns.whalecloud.com"];
//设置微信AppId,设置分享url,默认使用友盟的网址
[UMSocialWechatHandler setWXAppId:WXAppID appSecret:WXShareAppSecret url:@"http://www.baidu.com"];
//设置分享到QQ空间的应用Id,和分享url链接
[UMSocialQQHandler setQQWithAppId:QQShareAppID appKey:QQShareAppKey url:@"http://www.baidu.com"];
}
/**
这里处理新浪微博SSO授权进入新浪微博客户端后进入后台,再返回原来应用
*/
- (void)applicationDidBecomeActive:(UIApplication *)application
{
[UMSocialSnsService applicationDidBecomeActive];
}
也可以设置相关的宏定义
#define APPKEY_UM @"57528d7967e58e7.................."
#define APPKEY_QQ @"8i0qC3Pz.............."
#define APPID_QQ @"110196............"
#define APPKEY_SINA @"21798.........."
#define APPSecret_SINA @"ab891238712.........................................."
#define APPKEY_WEIXIN @"wx28ccc..........................."
#define APPSecret_WEIXIN @"cdc9a69e.........................................."
在ViewController里面的实现
#import "UMSocial.h"
@interface ViewController ()<UMSocialUIDelegate>
@end
然后实现方法
//如果需要分享回调,请将delegate对象设置self,并实现下面的回调方法
[UMSocialData defaultData].extConfig.title = @"分享的title";
[UMSocialData defaultData].extConfig.qqData.url = @"http://baidu.com";
[UMSocialSnsService presentSnsIconSheetView:self
appKey: APPKEY_UM
shareText:@"友盟社会化分享让您快速实现分享等社会化功能,http://umeng.com/social"
shareImage:[UIImage imageNamed:@"icon"]
shareToSnsNames:@[UMShareToWechatSession,UMShareToWechatTimeline,UMShareToSina,UMShareToQQ,UMShareToQzone]
delegate:self];
-
如果是iOS9系统,还需要适配iOS9的HTTP传输安全问题
info.plist相关设置.jpeg
适配iOS9 参照友盟官网"适配iOS9系统" --> 信任白名单
A、在info.plist中加入安全域名白名单(右键info.plist用source code打开)
根据自己需要分享的平台添加你所需要的,具体参考友盟官方文档链接:
http://dev.umeng.com/social/ios/ios9
B、在info.plist的NSAppTransportSecurity下新增NSAllowsArbitraryLoads并设置为YES,指定所有HTTP连接都可正常请求
-
配置URL scheme
http://dev.umeng.com/social/ios/quick-integration#1_4
在你的工程设置项,targets 一栏下,选中自己的 target,在 Info->URL Types 中添加 URL Schemes。如果使用的是Xcode3或更低版本,则需要在plist文件中添加。获取各个平台appkey或者appid的方法可以参考分享详细文档绑定各个平台部分,各个平台的url scheme格式如下表:
注意事项:
1.新浪微博分享时,在other linker flags增加-ObjC 选项,并添加ImageIO 系统framework
2.QQ空间分享时必须有图片,否则分享失败
3.先使用分享面板分享,再使用直接快捷分享接口数据会混乱,需在使用直接分享时清空