目录
1. 友盟分享
2. 友盟登录
3. 友盟统计
1. 友盟分享 集成步骤
第一步
注册友盟开发账号(获取KEY)
注册QQ开发账号(获取ID、key)、注册微博开发账号(获取key、sect)、注册微信开发账号(获取ID、Serct)
第二步
cocoaPods(选择性集成)
pod 'UMengUShare/UI'
pod 'UMengUShare/Social/WeChat'
pod 'UMengUShare/Social/ReducedQQ'
pod 'UMengUShare/Social/QQ'
pod 'UMengUShare/Social/ReducedSina'
pod 'UMengUShare/Social/Sina'
/*
选择性集成 其他应用
# U-Share SDK UI模块(分享面板,建议添加)
pod ‘UMengUShare/UI’
# 集成微信(精简版0.2M)
pod ‘UMengUShare/Social/ReducedWeChat'
# 集成微信(完整版14.4M)
pod ‘UMengUShare/Social/WeChat'
# 集成QQ/QZone/TIM(精简版0.5M)
pod ‘UMengUShare/Social/ReducedQQ'
# 集成QQ/QZone/TIM(完整版7.6M)
pod ‘UMengUShare/Social/QQ'
# 集成新浪微博(精简版1M)
pod ‘UMengUShare/Social/ReducedSina'
# 集成新浪微博(完整版25.3M)
pod ‘UMengUShare/Social/Sina'
# 集成Facebook/Messenger
pod ‘UMengUShare/Social/Facebook'
# 集成Twitter
pod ‘UMengUShare/Social/Twitter'
# 集成支付宝
pod ‘UMengUShare/Social/AlipayShare'
# 集成钉钉
pod ‘UMengUShare/Social/DingDing'
# 集成豆瓣
pod ‘UMengUShare/Social/Douban'
# 集成人人
pod ‘UMengUShare/Social/Renren'
# 集成腾讯微博
pod ‘UMengUShare/Social/TencentWeibo'
# 集成来往(点点虫)
pod ‘UMengUShare/Social/LaiWang'
# 集成易信
pod ‘UMengUShare/Social/YiXin'
# 集成领英
pod ‘UMengUShare/Social/Linkedin'
# 集成Flickr
pod ‘UMengUShare/Social/Flickr'
# 集成Kakao
pod ‘UMengUShare/Social/Kakao'
# 集成Tumblr
pod ‘UMengUShare/Social/Tumblr'
# 集成Pinterest
pod ‘UMengUShare/Social/Pinterest'
# 集成Instagram
pod ‘UMengUShare/Social/Instagram'
# 集成Line
pod ‘UMengUShare/Social/Line'
# 集成WhatsApp
pod ‘UMengUShare/Social/WhatsApp'
# 集成有道云笔记
pod ‘UMengUShare/Social/YouDao'
# 集成印象笔记
pod ‘UMengUShare/Social/EverNote'
# 集成Google+
pod ‘UMengUShare/Social/GooglePlus'
# 集成Pocket
pod ‘UMengUShare/Social/Pocket'
# 集成DropBox
pod ‘UMengUShare/Social/DropBox'
# 集成VKontakte
pod ‘UMengUShare/Social/VKontakte'
# 集成邮件
pod ‘UMengUShare/Social/Email'
# 集成短信
pod ‘UMengUShare/Social/SMS'
# 加入IDFA获取
pod ‘UMengUShare/Plugin/IDFA'
*/
info.plist 中添加白名单
<key>LSApplicationQueriesSchemes</key>
<array>
<!-- 微信 URL Scheme 白名单-->
<string>wechat</string>
<string>weixin</string>
<!-- 新浪微博 URL Scheme 白名单-->
<string>sinaweibohd</string>
<string>sinaweibo</string>
<string>sinaweibosso</string>
<string>weibosdk</string>
<string>weibosdk2.5</string>
<!-- QQ、Qzone URL Scheme 白名单-->
<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>
<!-- 支付宝 URL Scheme 白名单-->
<string>alipay</string>
<string>alipayshare</string>
<!-- 人人 URL Scheme 白名单-->
<string>renrenios</string>
<string>renrenapi</string>
<string>renren</string>
<string>renreniphone</string>
<!-- 来往 URL Scheme 白名单-->
<string>laiwangsso</string>
<!-- 易信 URL Scheme 白名单-->
<string>yixin</string>
<string>yixinopenapi</string>
<!-- instagram URL Scheme 白名单-->
<string>instagram</string>
<!-- whatsapp URL Scheme 白名单-->
<string>whatsapp</string>
<!-- line URL Scheme 白名单-->
<string>line</string>
<!-- Facebook URL Scheme 白名单-->
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
</array>
项目 | Info | URLTypes添加URL Schemes
微信
微信AppKey
QQ/QQ空间
tencent+QQAppID (例:tencent100424468)
QQ+8位16进制 (AppID转16进制后,不足8位前面补0)
新浪微博
wb+新浪appKey
支付宝
ap+appID (identifier填alipayShare)
钉钉
钉钉appkey (identifier填dingtalk)
易信
易信appkey
Facebook
fb+FacebookID
第三步
注册友盟分享、注册各个平台,在openURL方法中做相应处理
AppDelegate 配置APIKEY
// 友盟appKey
static NSString *umengKey = @"596*12d475ca353ed7000bb7";
// QQ
static NSString *qqAppID = @"1105*85954";
static NSString *qqAppKey = @"5Z*CTJeQneILxHvJ";
// 微博
static NSString *wbAppKey = @"33*1627971";
static NSString *wbAppSecret = @"60*d6b29e7e7ad697a2e8f5855cd7fd1";
// 微信
static NSString *wxAppID = @"wxda5*c5195ebb9ffe";
static NSString *wxAppSecret = @"e3*055efd6db3d1497424a4c0e36dbd2";
// 友盟
[[UMSocialManager defaultManager] setUmSocialAppkey:USHAREAPPKEY];
// 微信
[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_WechatSession appKey:WXAppID appSecret:WXSecret redirectURL:@"http://mobile.umeng.com/social"];
// QQ
[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_QQ appKey:QQAppID appSecret:nil redirectURL:@"http://mobile.umeng.com/social"];
// 新浪
[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_Sina appKey:SinaAPPKEY appSecret:SinaSecret redirectURL:@"https://sns.whalecloud.com/sina2/callback"];
// 移除相应平台的分享,如微信收藏
//[[UMSocialManager defaultManager] removePlatformProviderWithPlatformTypes:@[@(UMSocialPlatformType_WechatFavorite)]];
// iOS 9以前
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url sourceApplication:sourceApplication annotation:annotation];
if (!result) {
// 其他如支付等SDK的回调
BOOL canHandleURL = [Pingpp handleOpenURL:url withCompletion:nil];
return canHandleURL;
}
return result;
}
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
//
BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url];
if (!result) {
// 其他如支付等SDK的回调
BOOL canHandleURL = [Pingpp handleOpenURL:url withCompletion:nil];
return canHandleURL;
}
return result;
}
// iOS 9 及以后
- (BOOL)application:(UIApplication *)app
openURL:(NSURL *)url
options:(NSDictionary *)options {
BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url];
if (!result) {
BOOL canHandleURL = [Pingpp handleOpenURL:url withCompletion:nil];
return canHandleURL;
}
return result;
}
其他应用的平台初始化
// 钉钉
[[UMSocialManager defaultManager] setPlaform: UMSocialPlatformType_DingDing appKey:@"dingoalmlnohc0wggfedpk" appSecret:nil redirectURL:nil];
// 支付宝
[[UMSocialManager defaultManager] setPlaform: UMSocialPlatformType_AlipaySession appKey:@"2015111700822536" appSecret:nil redirectURL:nil];
// 易信
[[UMSocialManager defaultManager] setPlaform: UMSocialPlatformType_YixinSession appKey:@"yx35664bdff4db42c2b7be1e29390c1a06" appSecret:nil redirectURL:@"http://mobile.umeng.com/social"];
// 点点虫(原来往)
[[UMSocialManager defaultManager] setPlaform: UMSocialPlatformType_LaiWangSession appKey:@"8112117817424282305" appSecret:@"9996ed5039e641658de7b83345fee6c9" redirectURL:@"http://mobile.umeng.com/social"];
// 领英
[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_Linkedin appKey:@"81t5eiem37d2sc" appSecret:@"7dgUXPLH8kA8WHMV" redirectURL:@"https://api.linkedin.com/v1/people"];
// Twitter
[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_Twitter appKey:@"fB5tvRpna1CKK97xZUslbxiet" appSecret:@"YcbSvseLIwZ4hZg9YmgJPP5uWzd4zr6BpBKGZhf07zzh3oj62K" redirectURL:nil];
// Facebook
[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_Facebook appKey:@"506027402887373" appSecret:nil redirectURL:nil];
// Pinterest
[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_Pinterest appKey:@"4864546872699668063" appSecret:nil redirectURL:nil];
// dropbox
[[UMSocialManager defaultManager] setPlaform: UMSocialPlatformType_DropBox appKey:@"k4pn9gdwygpy4av" appSecret:@"td28zkbyb9p49xu" redirectURL:@"https://mobile.umeng.com/social"];
// vk
[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_VKontakte appKey:@"5786123" appSecret:nil redirectURL:nil];
第四步:点击分享按钮
-(void)inviteFriend{
// 弹出自定义分享按钮视图,点击事件:
switch (tag) {
case 0://微信朋友圈
[weakSelf shareWebPageToPlatformType:UMSocialPlatformType_WechatTimeLine];
break;
case 1://微信好友
[weakSelf shareWebPageToPlatformType:UMSocialPlatformType_WechatSession];
break;
case 2: //QQ
[weakSelf shareWebPageToPlatformType:UMSocialPlatformType_QQ];
break;
case 3: //微博
[weakSelf shareWebPageToPlatformType:UMSocialPlatformType_Sina];
break;
default:
break;
}
- (void)shareWebPageToPlatformType:(UMSocialPlatformType)platformType{
// 创建分享对象
UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];
// 设置内容
// 标题 详情 图片(没有详情时会显示url地址)
UMShareWebpageObject *shareObject = [UMShareWebpageObject shareObjectWithTitle:@"Y-您贴身的出行管家" descr:@"#Y#出游担心行程不满意,提前结束又损失钱财?上Y,行程费用每天结,减少你的经济损失,提升管家服务质量。" thumImage:[UIImage imageNamed:@"icon"]]; // img类型(直接写图片名,分享失败)
// 点击跳转的URL
shareObject.webpageUrl = @"分享跳转的url"; // 没有地址则微信提示小红点
messageObject.shareObject = shareObject;
// 分享---调用分享接口
[[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:self completion:^(id data, NSError *error) {
if (error) {
UMSocialLogInfo(@"************Share fail with error %@*********",error);
[YTHUD showError:@"分享失败"];
}else{
if ([data isKindOfClass:[UMSocialShareResponse class]]) {
}else{
}
[YTHUD showSuccess:@"分享成功"];
}
}];
}
// 弹出系统分享UI
[UMSocialUIManager showShareMenuViewInWindowWithPlatformSelectionBlock:^(UMSocialPlatformType platformType, NSDictionary *userInfo) {
}];
如果没有出现某个平台,去添加白名单
分享后留在分享平台,点击左上角返回本应用。是不会走分享完成回调的。是否成功是作为参数在分享平台调用本app时的url scheme中。
微博没有长按图片识别二维码的功能
微博分享注意点
一般不会用web链接分享,会直接是文本。
通常使用图文分享,微博的图文分享和别的有所区别,需要单独设置text
// 拼接在里面的url会在发表后变成链接,##中的内容为话题,@后跟微博账号名
NSString *title=[NSString stringWithFormat:@"#章鱼帝为球迷而生# %@ %@ 来自@章鱼帝官方微博",shareModel.title,shareModel.shareUrl];
messageObject.text=title;
常用的分享类型
UMShareWebpageObject : UMShareObject 链接web类型
@interface UMShareWebpageObject : UMShareObject
/** 网页的url地址
* @note 不能为空且长度不能超过10K
*/
@property (nonatomic, retain) NSString *webpageUrl;
/**
* @param title 标题
* @param descr 描述
* @param thumImage 缩略图(UIImage或者NSData类型,或者image_url)
*
*/
+ (UMShareWebpageObject *)shareObjectWithTitle:(NSString *)title
descr:(NSString *)descr
thumImage:(id)thumImage;
@end
UMShareImageObject : UMShareObject 图片分享
@interface UMShareImageObject : UMShareObject
/** 分享单个图片(支持UIImage,NSdata以及图片链接Url NSString类对象集合)
* @note 图片大小根据各个平台限制而定
*/
@property (nonatomic, retain) id shareImage;
/** 分享图片数组,支持 UIImage、NSData 类型
* @note 仅支持分享到:
* 微博平台,最多可分享9张图片
* QZone平台,最多可分享20张图片
*/
@property (nonatomic, copy) NSArray *shareImageArray;
/**
* @param title 标题
* @param descr 描述
* @param thumImage 缩略图(UIImage或者NSData类型,或者image_url)
*
*/
+ (UMShareImageObject *)shareObjectWithTitle:(NSString *)title
descr:(NSString *)descr
thumImage:(id)thumImage;
@end
微信小程序分享
UMSocialPlatformType_WechatSession
NSString *path=[NSString stringWithFormat:@"pages/news/article/index?id=%@",shareModel.shareId];
UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];
UMShareMiniProgramObject *shareObject = [UMShareMiniProgramObject shareObjectWithTitle:title descr:subTitle thumImage:image];
shareObject.webpageUrl = shareModel.shareUrl;
shareObject.userName = WeChatMin; // 小程序id
shareObject.path = path; // 页面路径
shareObject.miniProgramType = UShareWXMiniProgramTypeRelease; // 开发版本
// shareObject.hdImageData = data;
messageObject.shareObject = shareObject;
2. 友盟登录
支持的平台
国内平台
微信、QQ、新浪、腾讯微博、人人网、豆瓣
国外平台
Facebook、Twitter、linkedIn、Kakao
配置 同分享
import <UMSocialCore/UMSocialCore.h>
可以获取到 昵称/性别/头像/应用特殊唯一ID/
NSInteger LoginType = 0;
switch (type) {
case 0:
LoginType=UMSocialPlatformType_QQ;
break;
case 1:
LoginType=UMSocialPlatformType_WechatSession;
break;
case 2:
LoginType=UMSocialPlatformType_Sina;
break;
default:
break;
}
[[UMSocialManager defaultManager]getUserInfoWithPlatform:LoginType currentViewController:nil completion:^(id result, NSError *error) {
if(error){
NSLog(@"%@",error);
}else{
//
UMSocialUserInfoResponse *resp = result;
NSDictionary *dic;
switch (LoginType) {
case UMSocialPlatformType_QQ:{
dic=@{@"name":resp.name,@"avatar":resp.iconurl,@"type":@"1",@"id":resp.accessToken,@"sex":resp.unionGender};
}
break;
case UMSocialPlatformType_WechatSession:{
dic=@{@"name":resp.name,@"avatar":resp.iconurl,@"type":@"2",@"id":resp.uid,@"sex":resp.unionGender};
}
break;
case UMSocialPlatformType_Sina:{
dic=@{@"name":resp.name,@"avatar":resp.iconurl,@"type":@"3",@"id":resp.accessToken,@"sex":resp.unionGender };
}
break;
default:
break;
}
NSLog(@"%@",dic);
}
}];
3. 友盟统计
pod 'UMengAnalytics'
#import <UMMobClick/MobClick.h>
AppDelegate中(仅+以下代码即可)
// 友盟统计
[MobClick setLogEnabled:true];
UMConfigInstance.appKey=USHAREAPPKEY; // 友盟应用AppKey
UMConfigInstance.channelId=@"App Store";
[MobClick startWithConfigure:UMConfigInstance];
// 是否加密统计数据(默认:不加密)
[MobClick setEncryptEnabled:true];
// 是否捕捉bug(默认:是)
[MobClick setCrashReportEnabled:false];
/*. 打印测试设备id时
// b75294c460d76ef8c248aa73b2049cc367949ce7
Class cls = NSClassFromString(@"UMANUtil");
SEL deviceIDSelector = @selector(openUDIDString);
NSString *deviceID = nil;
if(cls && [cls respondsToSelector:deviceIDSelector]){
deviceID = [cls performSelector:deviceIDSelector];
}
NSData* jsonData = [NSJSONSerialization dataWithJSONObject:@{@"oid" : deviceID}
options:NSJSONWritingPrettyPrinted
error:nil];
NSLog(@"%@", [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]);
*/
配置数据发送策略(有官网(优先)和代码 2方式)
官网---开发者官网|统计分析|设置|发送策略(有:启动时(默认)和按间隔2种)
统计账号(友盟统计默认以设备为标准,可通过以下方法统计账号)
代码
// 统计用户id为uid的账号
[MobClick profileSignInWithPUID:@"uid"];
// 统计用户id为uid,登陆方式为wx的账号
[MobClick profileSignInWithPUID:@"uid" provider:@"wx"];
// 停止统计用户
[MobClick profileSignOff];
官网
官网|设置|使用账号统计报表(启动)
统计页面
// willAppear中+
[MobClick beginLogPageView:@"page"];
// willDisAppear中+
[MobClick endLogPageView:@"page"];
统计事件
代码
// 统计事件
[MobClick event:@"eventId"];
// 统计事件(+属性)
[MobClick event:@"purchase" attributes:@{@"type" : @"book", @"quantity" : @"3"}];
官网
官网|设置|事件 添加事件