美文网首页iOSiOS 开发者的日常iOS学习开发
iOS分享到微信好友和微信朋友圈

iOS分享到微信好友和微信朋友圈

作者: KenZhangCn | 来源:发表于2016-09-10 09:46 被阅读4043次
    鉴于网上的许多文章资料有些老旧,或者不完整.对iOS内分享到微信好友和朋友圈做一个负责任整理.(Xcode 7.2/iOS7.1)

    这里指的是使用微信公众平台的方式,当然也可以选择友盟等第三方平台部署.
    直接上干货:
    • 1.0 第一步当然是要让微信允许你使用它的接口.先到微信开放平台注册. 微信开放平台 需要实名和身份验证. 通过后创建自己的应用.
    • 1.1 填写完各种信息提交成功之后需要等待审核,印象中提示需要一周审核时间,以为又是一个漫长的等待,还顺带吐槽了一下这审核速度.结果第二天就审核通过了.你需要的就是下面的AppID.到这里开放平台的准备工作就做好了.另外提一下,如果需要使用微信支付微信登录等高级功能,请准备好300软妹币.


    • 2.0 接下来去下载微信工具包,如图



      然后把文件拖入到你的项目中,建议看一看README,里面会提到许多需要注意的事项.这个时候项目会有许多的报错,因为需要链接的库还没加入.


    • 2.1 在TARGETS - General下导入库,一个不能漏,另外在Xcode7下后缀名有变化,不再是dylib,变成了tbd


    • 2.2 给你的项目添加 URL type,URL Types URL Schemes 一栏填写刚刚微信开放平台上申请的应用的AppID.这里直接盗图.感谢图源君
    • 2.3 在Info.plist文件里添加字段 LSApplicationQueriesSchemes ,原因是因为iOS 9之后对HTTP访问的限制.微博/空间/支付宝等类似,参考这篇文章或者自己去翻文档吧.长这样:
    • 2.4 还需要暂时回退到HTTP支持,就是在plist文件中添加HTTP支持.写在这里.

    • 3.0 准备工作貌似做完了,先运行看看,然后就可以写代码了.

    • 3.1 去AppDelegate注册AppID并重写两个代理方法.记得导入WXApi.h头文件.
      - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
      //注册微信ID
      [WXApi registerApp:@"your AppID"];
      return YES;
      }

      - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
            return [WXApi handleOpenURL:url delegate:self];
      }
      
      - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
            return [WXApi handleOpenURL:url delegate:self];
      }
      
    • 3.2 在你需要的地方调用方法分享就行了.记得头文件.
      if ([WXApi isWXAppInstalled] && [WXApi isWXAppSupportApi]) {
      //message是多媒体分享(链接/网页/图片/音乐各种)
      //text是分享文本,两者只能选其一
      SendMessageToWXReq *req = [[SendMessageToWXReq alloc] init];
      WXMediaMessage *message = [WXMediaMessage message];
      message.title = @"Hi 天气 - 这里是标题";
      message.description = @"不给糖就捣蛋,还不快去下载加好评!";
      [message setThumbImage:[UIImage imageNamed:@"这里是缩略图"]];
      req.message = message;
      WXAppExtendObject *ext = [WXAppExtendObject object];
      ext.url = @"https://itunes.apple.com/us/app/hi-tian-qi/id1146330042?mt=8";
      ext.extInfo = @"Hi 天气";
      message.mediaObject = ext;
      //默认是Session分享给朋友,Timeline是朋友圈,Favorite是收藏
      req.scene = WXSceneSession;

        [WXApi sendReq:req];
      } else {
        [SVProgressHUD showInfoWithStatus:@"你还没有安装微信"];
      }
      
    • 3.3 Tip:AppStore的分享链接打不开只能绕路了,什么?你说应用宝?还好我机智的用了iTunes分享链接,直走左转然后绕过那个弯再往前100m的左手边就到了.

    • 3.4 如果编译遇到 unable to execute command: Segmentation fault: 11
      linker command failed due to signal (use -v to see invocation)错误,就关闭BitcodeTarget->Build Settings->Enable Bitcode.

    • 3.5 看见链接了吗,没看见我再给一遍,快去下载. Hi 天气 - 不给糖就捣蛋!


    由于笔者知识有限,如有错误,欢迎指出。

    相关文章

      网友评论

      • 睿少:大神,help me !
        我如果用text分享到朋友圈没有问题,但是分享图片就不行
        点击分享图片后,没有任何反应,error输出都没有,就是button高亮一下就没有了
        睿少:@KenZhangCn 问题解决了,谢谢
        KenZhangCn:@睿少 mediaObject类型选WXImageObject类型, imageData这些都设置好了没
      • 睿少:大神,为什么我能分享文字,但是不能分享图片啊!!
      • RichardZhao:楼主 我的微信分享 为什么分享的url 地址打不开 怎么破
        RichardZhao:@KenZhangCn 已经解决了 感谢您的回复
        KenZhangCn:@RichardZhao 是你自己项目的地址打不开吗?你用了AppStore分享的URL地址?
      • Jabber_YQ:哥们进去就闪退诶
        Jabber_YQ:@KenZhangCn iphone5s 没关呀
        KenZhangCn:@Jabber_YQ 请问仁兄什么型号手机,什么版本,关了定位吗?

      本文标题:iOS分享到微信好友和微信朋友圈

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