微信分享 - iOS
2018-08-29 本文已影响414人
iLeooooo
一、微信分享
在微信开放平台申请
AppID
和AppSecret
第一步:项目中直接pod 'WechatOpenSDK'
第二步:AppDelegate.m 文件中
首先遵守 <WXApiDelegate>
然后在
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
添加 APPID 是你在微信平台注册的程序里的
[WXApi registerApp:appId enableMTA:false];
return YES;
}
第三步:重写APPDelegate.m文件中的方法
添加重写
-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return [WXApi handleOpenURL:url delegate:self];
}
-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
return [WXApi handleOpenURL:url delegate:self];
}
-(void)onReq:(BaseReq *)req {
}
// 从微信分享过后点击返回应用的时候调用
- (void)onResp:(BaseResp *)resp {
//把返回的类型转换成与发送时相对于的返回类型,这里为SendMessageToWXResp
SendMessageToWXResp *sendResp = (SendMessageToWXResp *)resp;
//使用UIAlertView 显示回调信息
NSString *str = [NSString stringWithFormat:@"%d",sendResp.errCode];
UIAlertView *alertview = [[UIAlertView alloc] initWithTitle:@"回调信息" message:str delegate:self cancelButtonTitle:@"确认" otherButtonTitles:nil, nil];
[alertview show];
/* WXSuccess = 0, /**< 成功 */
WXErrCodeCommon = -1, /**< 普通错误类型 */
WXErrCodeUserCancel = -2, /**< 用户点击取消并返回 */
WXErrCodeSentFail = -3, /**< 发送失败 */
WXErrCodeAuthDeny = -4, /**< 授权失败 */
WXErrCodeUnsupport = -5, /**< 微信不支持 */
*/
}
第四步:设置从微信返回到你的APP,不设置会返回不会来
项目文件-->Targets-->[Project名]-->info-->URL Types
设置返回URL Types
第五步:分享的文件中导入,#import <WXApi.h>
第六步:开始分享
链接分享
/** 微信分享 */
- (void)shareAction {
NSString *kLinkURL = @"http://www.baidu.com";
NSString *kLinkTitle = @"分享标题在这里";
NSString *kLinkDescription = @"分享副标题在这里,点击了解详情";
SendMessageToWXReq *req = [[SendMessageToWXReq alloc]init];
// 是否是文档
req.bText = NO;
// WXSceneSession = 0, /**< 聊天界面 */
// WXSceneTimeline = 1, /**< 朋友圈 */
// WXSceneFavorite = 2,
// 好友列表
req.scene = WXSceneSession;
//创建分享内容对象
WXMediaMessage *urlMsg = [WXMediaMessage message];
urlMsg.title = kLinkTitle;//分享标题
urlMsg.description = kLinkDescription;//分享描述
[urlMsg setThumbImage:[UIImage imageNamed:@"launch_logo"]];//分享图片,使用SDK的setThumbImage方法可压缩图片大小
//创建多媒体对象
WXWebpageObject *obj = [WXWebpageObject object];
obj.webpageUrl = kLinkURL;//分享链接
//完成发送对象实例
urlMessage.mediaObject = obj;
req.message = urlMsg;
//发送分享信息
[WXApi sendReq:req];
}
分享音乐
- (void)shareMusic {
SendMessageToWXReq *req = [[SendMessageToWXReq alloc] init];
// 是否是文档
req.bText = NO;
// WXSceneSession = 0, /**< 聊天界面 */
// WXSceneTimeline = 1, /**< 朋友圈 */
// WXSceneFavorite = 2,
req.scene = WXSceneSession;
//创建分享内容对象
WXMediaMessage *urlMsg = [WXMediaMessage message];
urlMsg.title = @"分享一首歌";//分享标题
urlMsg.description = @"一首小歌,放松一下";//分享描述
[urlMsg setThumbImage:[UIImage imageNamed:@"XXshar"]];//分享图片,使用SDK的setThumbImage方法可压缩图片大小
//创建多媒体对象
NSString *kLinkURL = @"http://music.163.com/#/m/song?id=1296550252";
WXMusicObject *music = [WXMusicObject object];
music.musicUrl = kLinkURL;//分享链接
//完成发送对象实例
urlMsg.mediaObject = music;
req.message = urlMsg;
//发送分享信息
[WXApi sendReq:req];
}
分享视频
- (void)shareVideo {
SendMessageToWXReq *req = [[SendMessageToWXReq alloc]init];
// 是否是文档
req.bText = NO;
// WXSceneSession = 0, /**< 聊天界面 */
// WXSceneTimeline = 1, /**< 朋友圈 */
// WXSceneFavorite = 2,
req1.scene = 0;
//创建分享内容对象
WXMediaMessage *urlMsg = [WXMediaMessage message];
urlMsg.title = @"分享视频";//分享标题
urlMsg.description = @"小视频";//分享描述
[urlMsg setThumbImage:[UIImage imageNamed:@"XXshar"]];//分享图片,使用SDK的setThumbImage方法可压缩图片大小
//创建多媒体对象
NSString *kLinkURL = @"http://baidu.wasu.cn/kan/a9OrA?fr=v.baidu.com/browse";
WXVideoObject *video = [WXVideoObject object];
video.videoUrl = kLinkURL;//分享链接
//完成发送对象实例
urlMsg.mediaObject = video;
req.message = urlMsg;
//发送分享信息
[WXApi sendReq:req];
}
分享图片
- (void)shareImage {
WXMediaMessage *message = [WXMediaMessage message];
// 设置消息缩略图的方法
[message setThumbImage:[UIImage imageNamed:@"图片.png"]];
// 多媒体消息中包含的图片数据对象
WXImageObject *imageObject = [WXImageObject object];
UIImage *image = [UIImage imageNamed:@"要分享的图片名"];
// 图片真实数据内容
NSData *data = UIImagePNGRepresentation(image);
imageObject.imageData = data;
// 多媒体数据对象,可以为WXImageObject,WXMusicObject,WXVideoObject,WXWebpageObject等。
message.mediaObject = imageObject;
SendMessageToWXReq *req = [[SendMessageToWXReq alloc] init];
req.bText = NO;
req.message = message;
req.scene = WXSceneTimeline;// 分享到朋友圈
[WXApi sendReq:req];
}
二、直接跳转到微信公众号
微信开放平台应用要通过开发者资质认证,并且绑定指定要跳转的微信公众账号
用到的接口:
#pragma mark - JumpToBizProfileReq
/* ! @brief 第三方通知微信,打开指定微信号profile页面
*
* 第三方通知微信,打开指定微信号profile页面
*/
@interface JumpToBizProfileReq : BaseReq
/** 跳转到该公众号的profile
* @attention 长度不能超过512字节
*/
@property (nonatomic, retain) NSString* username;
/** 如果用户加了该公众号为好友,extMsg会上传到服务器
* @attention 长度不能超过1024字节
*/
@property (nonatomic, retain) NSString* extMsg;
/**
* 跳转的公众号类型
* @see WXBizProfileType
*/
@property (nonatomic, assign) int profileType;
@end
发送请求:
JumpToBizProfileReq *req = [[JumpToBizProfileReq alloc]init];
req.username = @"gh_6b31b722a1e8"; //原始ID
req.extMsg = @""; /*若为服务号或订阅号则本字段为空,硬件号则填写相关的硬件二维码串*/
req.profileType =0;
[WXApi sendReq:req];
特别注意:
username 参数对应的是公众账号的原始ID!
慢慢来,一步一个巴掌印~~~