iOS分享到微信简明教程
hrbwtm
9年前
<p>本篇教程主要是讲解如何实现iOS程序分享自定义内容(文本、图片、音乐)到微信好友、朋友圈、收藏的功能。</p> <h3><strong>目录</strong></h3> <p>1. 在微信开放平台申请账号并创建移动应用</p> <p>2. 项目集成微信SDK</p> <p>3. 配置项目</p> <p>4. 分享文本和链接到微信</p> <p>5. 对分享结果进行处理</p> <p>6. 总结</p> <h2><strong>1.在微信开放平台申请账号并创建移动应用</strong></h2> <p>要分享内容到微信,必须得在 微信公众平台 注册一个帐号并且创建一个移动应用。</p> <p>创建了移动应用还需要审核通过才可以,这一过程大概需要2-3天。</p> <p><img src="https://simg.open-open.com/show/a6ff15da4a23562cb31f20945fefc67d.png"></p> <p>等不及马上想尝试?别着急,继续看下去,稍后我会讲如何在没有申请的情况下实现我们的功能。</p> <h2><strong>2. 项目集成微信SDK</strong></h2> <h3><strong>2.1 下载微信iOS SDK</strong></h3> <p>前往 微信公众平台-资源中心 下载微信iOS SDK。</p> <p><img src="https://simg.open-open.com/show/255746c06b49fb94094e3d967d1b0182.png"></p> <h3><strong>2.2 创建项目,加入SDK</strong></h3> <p>打开XCode,创建一个Single View Application,命名为WechatShareDemo。我们这个教程接下来就在这个项目的基础上进行。</p> <p>将2.1下载好的SDK压缩包解压后你可以看到以下文件:</p> <p style="text-align:center"><img src="https://simg.open-open.com/show/5d18a29147b1cef03e828092d891565d.png"></p> <p>其中的README.txt你有时间可以看看。</p> <p>其他的.a、.h文件是我们需要的,直接导入到我们创建的WechatShareDemo中来。</p> <p><img src="https://simg.open-open.com/show/8f80a1d9c0dd4748cb8b2480349d675a.png"></p> <p>ok,此时我们已经有了一个导入了微信SDK的项目了,接下来我们需要配置一下!</p> <h2><strong>3 配置SDK环境</strong></h2> <h3><strong>3.1 导入需要的动态库和框架</strong></h3> <p>在工程Build Phases -> Link Binary With Libraries 链接以下动态库和框架文件:</p> <p>1.SystemConfiguration.framework</p> <p>2.CoreTelephony.framework</p> <p>3.Security.framework</p> <p>4.CFNetwork.framework</p> <p>5.libsqlite3.0.tbd</p> <p>6.libz.1.2.8.tbd</p> <p>7.libc++.tbd</p> <p><img src="https://simg.open-open.com/show/a1b7da7412c093157532e549fd10ffa7.png"></p> <h3><strong>3.2 设置Other Linker Flags为"-Objc -all_load"</strong></h3> <p><img src="https://simg.open-open.com/show/df9928093802ef3db6214a4f410d2cb9.png"></p> <h3><strong>3.3 设置URL scheme</strong></h3> <p>为了跳转至微信后还能跳回我们的app,我们必须将我们的appID添加为URL scheme。</p> <p><img src="https://simg.open-open.com/show/2e0d5886b5016730ae040fbda197132b.png"></p> <h2><strong>4. 编写分享代码</strong></h2> <p>到目前为止,我们导入了微信的SDK,配置了开发环境。试着运行一下吧!如果没有报错,就可以进行下一步啦!有报错可以在评论区评论。</p> <h3><strong>4.1 获取appID</strong></h3> <p>在我们编写代码之前,还有一个东西需要准备的,那就是appID。</p> <p>什么是appID呢?appID是微信用来标识你的应用的唯一ID,注意与苹果的app id没有任何关系。</p> <p>如果你已经创建了移动应用并且审核通过了的话,点击应用的查看按钮进入应用详情可以看到如下图:红框里面的就是appID,这个东西待会有用。</p> <p style="text-align:center"><img src="https://simg.open-open.com/show/26d3ed0c755c69c721af9fbe6e0d1ee2.png"></p> <p>如果你没有appID呢?你可以先用这个:</p> <pre> <code class="language-objectivec">wxd930ea5d5a258f4f // 微信SDK demo里的appID</code></pre> <p>这个appID是微信自己的demo里面的appID,用来测试很方便。</p> <p>接下来的代码里都用这个appID。</p> <h3><strong>4.2 在应用里注册你的appID</strong></h3> <p>在AppDelegate.m文件中,引入WXApi.h</p> <pre> <code class="language-objectivec">- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [WXApi registerApp:@"wxd930ea5d5a258f4f"];//注册appID return YES; }</code></pre> <h3><strong>4.3 分享一段文本到微信</strong></h3> <p>好了!该开始写分享的代码了,在Main.storyboard的viewController里放置一个按钮,在viewController.m文件里引入微信的两个头文件:</p> <pre> <code class="language-objectivec">#import "WXApi.h" #import "WXApiObject.h"</code></pre> <p>在按钮的响应事件里这样写:</p> <pre> <code class="language-objectivec">- (IBAction)shareButtonClick:(id)sender { SendMessageToWXReq *req = [[SendMessageToWXReq alloc]init]; req.bText = YES; // 指定为发送文本 req.text = @"hello world"; // 要发送的文本 req.scene = WXSceneSession;// 指定发送到会话 [WXApi sendReq:req]; }</code></pre> <p>运行一下,一切正常的话,你现在应该可以分享文本到微信好友了!</p> <p>注意req.scene是指定你要分享到哪个场景,在上面的代码里是分享到会话(聊天界面)里,你还可以选择分享到朋友圈或者收藏:</p> <pre> <code class="language-objectivec">/*! @brief 请求发送场景 * */ enum WXScene { WXSceneSession = 0, /**< 聊天界面 */ WXSceneTimeline = 1, /**< 朋友圈 */ WXSceneFavorite = 2, /**< 收藏 */ };</code></pre> <h3><strong>4.4 分享网页到微信</strong></h3> <p>只需要简单的代码,我们可以分享一个网页到微信:</p> <pre> <code class="language-objectivec">-(void)sendUrl:(NSString*)url To:(enum WXScene)scene{ SendMessageToWXReq *req = [[SendMessageToWXReq alloc]init]; req.bText = NO; req.scene = WXSceneSession;// 分享到会话 WXMediaMessage *medMessage = [WXMediaMessage message]; medMessage.title = @"分享网页的标题"; // 标题 medMessage.description = @"这个就是描述啦";// 描述 WXWebpageObject *webPageObj = [WXWebpageObject object]; [medMessage setThumbImage:[UIImage imageNamed:@"kitty"]];// 缩略图 webPageObj.webpageUrl = @"http://www.baidu.com"; medMessage.mediaObject = webPageObj; req.message = medMessage; [WXApi sendReq:req]; }</code></pre> <p>效果如图:</p> <p style="text-align:center"><img src="https://simg.open-open.com/show/317d834d875c49a7acf474f60eccd898.png"></p> <p>上面是分享到会话里,同样的也可以分享到微信朋友圈和收藏,只要修改scene(场景)即可。</p> <h2><strong>5 对分享结果进行处理</strong></h2> <p>当微信处理完你的情求,跳回到你的app时,会给你带上一些信息,在这里你可以对其进行处理,知道是用户取消了,还是发送成功了。</p> <p>在AppDelegate.m 里:</p> <ol> <li>声明实现WXApiDelegate协议</li> <li>实现application:handleOpenURL方法,将url交给微信SDK进行处理</li> <li>实现WXApiDelegate协议里的onResp:方法。</li> </ol> <pre> <code class="language-objectivec">// 处理其他app调起的情况 -(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{ // 交给微信处理,如果它能处理 会回调delegate的相关方法如onResp: return [WXApi handleOpenURL:url delegate:self]; } #pragma mark WXApiDelegate -(void) onResp:(BaseResp*)resp{ NSString *str = [NSString stringWithFormat:@"%d",resp.errCode]; UIAlertView *alertview = [[UIAlertView alloc] initWithTitle:@"微信返回结果" message:str delegate:self cancelButtonTitle:@"好的" otherButtonTitles:nil, nil]; [alertview show]; }</code></pre> <h2><strong>6.总结</strong></h2> <p>iOS分享内容到微信的基本流程到这里就差不多了,如果还想深入可以去看官方的开发文档和demo。</p> <p> </p> <p>来自:http://www.jianshu.com/p/db2751ff334a</p> <p> </p>