IOS开发

微信分享 - iOS

2018-08-29  本文已影响414人  iLeooooo

一、微信分享

在微信开放平台申请AppIDAppSecret

第一步:项目中直接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!

慢慢来,一步一个巴掌印~~~

上一篇下一篇

猜你喜欢

热点阅读