美文网首页IOS开发
微信分享 - iOS

微信分享 - iOS

作者: iLeooooo | 来源:发表于2018-08-29 18:37 被阅读414次

    一、微信分享

    在微信开放平台申请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!

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

    相关文章

      网友评论

        本文标题:微信分享 - iOS

        本文链接:https://www.haomeiwen.com/subject/fzvkwftx.html