友盟分享(微信分享,微博分享,Facebook分享)
最近写了友盟分享,已经完全实现了,从最一开始的申请APPID到最后分享成功,跟大家细致的分享一下,希望对读者有帮住
一. 分享流程介绍
1.下载友盟分享的SDK并导入
需要注意的是要导入很多头文件:(具体步骤移步:http://dev.umeng.com/social/ios/quick-integration)
- Security.framework
- libiconv.dylib
- SystemConfiguration.framework
- CoreGraphics.Framework
- libsqlite3.dylib
- CoreTelephony.framework
- libstdc++.dylib
- libz.dylib
2 设置友盟appkey
-
获取友盟Appkey。如果你之前已经在友盟注册了应用,获得了Appkey,可以继续使用之前获得Appkey。
-
在代码中设置你的友盟Appkey,在
AppDelegate
文件内设置你的AppKey:
3 配置第三方平台APPID及scheme
1. 配置第三方APPID
坑:
a.注册的时候让你输入的信息一定要对应你的APP信息
比如注册Facebook的时候,你的Bundel ID和应用名字 要统一,不然分享的时候就不会成功;
b.注意,我代码用的不是友盟自带的分享弹框样式是自定义的因为我要做国际化,没找到友盟的支持方法;
2 配置系统回调
3 配置URL scheme
不多说了,上代码吧:
//
// AppDelegate.m
// SPUIView
//
// Created by WBapple on 16/1/20.
// Copyright © 2016年 chinasofti. All rights reserved.
//
#import "AppDelegate.h"
//微信分享
#import "WXApi.h"
//友盟分享
#import "UMSocial.h"
#import "UMSocialFacebookHandler.h"
#import "UMSocialSinaSSOHandler.h"
#import "UMSocialWechatHandler.h"
@interface AppDelegate () <WXApiDelegate>
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
/*****************************************分享代码********************************/
// 1.友盟分享的Key
NSString *UmengAppkey = @"57173b1ce0f55add74AAAAAAAA";
// 2.要分享的URL
NSString *Url = I18N (@"myurl");
// 3.1设置友盟社会化组件appkey
[UMSocialData setAppKey:UmengAppkey];
// 3.2设置微信AppId、appSecret,分享url
[UMSocialWechatHandler setWXAppId:@"wx1d6AAAAAAAAAA"
appSecret:@"c8e7605d0bd5f02adAAAAAAAAAAAAA"
url:Url];
// 3.3打开新浪微博的SSO开关,设置新浪微博回调地址,这里必须要和你在新浪微博后台设置的回调地址一致
[UMSocialSinaSSOHandler openNewSinaSSOWithAppKey:@"165769AAAAA"
secret:@"d09a66e00701f1AAAAAAAAAAAAAAA"
RedirectURL:Url];
// 3.4设置Facebook,AppID和分享url
[UMSocialFacebookHandler setFacebookAppID:@"576212AAAAAAAA" shareFacebookWithURL:Url];
// 4.1支持横屏
[UMSocialConfig setSupportedInterfaceOrientations:UIInterfaceOrientationMaskLandscape];
// 4.2对未安装客户端平台进行隐藏(苹果审核需要,如果不加审核不过)
[UMSocialConfig hiddenNotInstallPlatforms:@[
UMShareToWechatSession,
UMShareToWechatTimeline,
UMShareToSina,
UMShareToFacebook
]];
// 4.4分享链接
[[UMSocialData defaultData].urlResource setResourceType:UMSocialUrlResourceTypeWeb url:Url];
/*****************************************分享代码********************************/
}
#pragma mark - 分享的方法
//回调函数
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation
{
BOOL result = [UMSocialSnsService handleOpenURL:url];
if (result == FALSE)
{
//调用其他SDK,例如支付宝SDK等
SVInfo (@"分享回调函数");
}
return result;
}
- (void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response
{
//根据`responseCode`得到发送结果,如果分享成功
if (response.responseCode == UMSResponseCodeSuccess)
{
//得到分享到的微博平台名
SVInfo (@"share to sns name is %@", [[response.data allKeys] objectAtIndex:0]);
}
}
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
return [UMSocialSnsService handleOpenURL:url];
}
//弹出列表方法presentSnsIconSheetView需要设置delegate为self
- (BOOL)isDirectShareInIconActionSheet
{
return YES;
}
//友盟分享
#import "UMSocial.h"
// 5.0分享
{ [[UMSocialControllerService defaultControllerService] setShareText:MessageText
shareImage:[UIImage imageNamed:image]
socialUIDelegate:self];
//微信好友
[UMSocialData defaultData].extConfig.wechatSessionData.title = MessageTitle;
[UMSocialData defaultData].extConfig.wechatSessionData.shareText = MessageText;
//微信朋友圈
[UMSocialData defaultData].extConfig.wechatTimelineData.title = MessageTitle;
// [UMSocialData defaultData].extConfig.facebookData.title = MessageTitle;
// [UMSocialData defaultData].extConfig.facebookData.url = Url;
// [UMSocialData defaultData].extConfig.facebookData.linkDescription =
// I18N (@"Click download application");
[UMSocialData defaultData].extConfig.facebookData.shareText =
[[NSString alloc] initWithFormat:@"%@%@", MessageTitle, Url];
//微博
[UMSocialData defaultData].extConfig.sinaData.shareText = MessageTitle;
}
//分享成功调用此方法
- (void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response
{
if (response.responseCode == UMSResponseCodeSuccess)
{
//把分享完成提示框放在底部
[UMSocialConfig setFinishToastIsHidden:NO position:UMSocialiToastPositionBottom];
SVInfo (@"分享成功了");
}
}