iOS微信之简单文本分享(集成官方SDK)

小编 2026-06-18 阅读:886 评论:0
前言开发工具:XCode7.3.1 SDK版本:V1.7.1一.APP提交审核前期准备工作:可以参考这篇博文http://www.jianshu.com/p/839dc30f2250 iOS版本只需要提供Bundle Id即可500CD...

前言

开发工具:XCode7.3.1 SDK版本:V1.7.1

一.APP提交审核

前期准备工作:可以参考这篇博文http://www.jianshu.com/p/839dc30f2250 iOS版本只需要提供Bundle Id即可

500CD4E3-4EE2-449F-8BF6-32D3102D1605.png

注:应用下载地址非必填

审核通过后就可以获取AppID,AppSecret

appid.png

二.环境搭建

1.下载最新的SDK

下载地址 https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319164&token=fdf6c5d38e9c82f85ebf72374441beff257c4849&lang=zh_CN

iOS资源下载.png

2.导入SDK

导入SDK.png

3.项目配置

a.设置支持HTTP请求

支持HTTP请求.png

参考博文:http://www.jianshu.com/p/5935dff47e4f

b.设置sheme白名单

设置Scheme白名单.png

参考博文:http://www.jianshu.com/p/f974f4cbba18

c.关闭bitcode

禁用bitcode1.png

禁用bitcode2.png

d.设置URL

设置URL.png

e.设置Build phases

设置Build phases.png

三.代码整合

1.注册ID,处理回调
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

// 从微信开放平台获取
NSString *APPID = @"从微信开放平台获取AppID";
// 向微信注册
[WXApi registerApp:APPID];

return YES;
}

-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
return [WXApi handleOpenURL:url delegate:self];
}

-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options{
return [WXApi handleOpenURL:url delegate:self];
}

#pragma mark WXApiDelegate 微信分享的相关回调

// onReq是微信终端向第三方程序发起请求,要求第三方程序响应。第三方程序响应完后必须调用sendRsp返回。在调用sendRsp返回时,会切回到微信终端程序界面
- (void)onReq:(BaseReq *)req
{
NSLog(@"onReq是微信终端向第三方程序发起请求,要求第三方程序响应。第三方程序响应完后必须调用sendRsp返回。在调用sendRsp返回时,会切回到微信终端程序界面");
}

// 如果第三方程序向微信发送了sendReq的请求,那么onResp会被回调。sendReq请求调用后,会切到微信终端程序界面
- (void)onResp:(BaseResp *)resp
{
NSLog(@"回调处理");

// 处理 分享请求 回调
if ([resp isKindOfClass:[SendMessageToWXResp class]]) {
    switch (resp.errCode) {
        case WXSuccess:
        {
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示"
                                                            message:@"分享成功!"
                                                           delegate:self
                                                  cancelButtonTitle:@"OK"
                                                  otherButtonTitles:nil, nil];
            [alert show];
        }
            break;
            
        default:
        {
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示"
                                                            message:@"分享失败!"
                                                           delegate:self
                                                  cancelButtonTitle:@"OK"
                                                  otherButtonTitles:nil, nil];
            [alert show];
        }
            break;
    }
  }
}
2.分享核心代码
// 简单文本分享
-(IBAction)clickShareButton:(id)sender{
SendMessageToWXReq *req = [[SendMessageToWXReq alloc] init];
req.text                = @"简单文本分享测试";
req.bText               = YES;
// 目标场景
// 发送到聊天界面  WXSceneSession
// 发送到朋友圈    WXSceneTimeline
// 发送到微信收藏  WXSceneFavorite
req.scene               = WXSceneSession;
[WXApi sendReq:req];
}

四.常见问题汇总(遇到的那些坑...)

1.官方Demo编译报错

下载地址: https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319164&token=fdf6c5d38e9c82f85ebf72374441beff257c4849&lang=zh_CN 解决办法:

解决办法.png

官方Demo:(直接运行官方的demo会报各种错误。。。,提供一个无错版本的)

https://github.com/andli0626/wx_demo_for_iOS-V1.7.1.git

五.参考资料

官方文档

https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=1417694084&token=fdf6c5d38e9c82f85ebf72374441beff257c4849&lang=zh_CN

官方API更新说明:
# SDK1.7.1
1.支持兼容ipv6(提升稳定性)
2. xCode Version 7.3.1 (7D1014) 编译
# SDK1.7
1.支持兼容ipv6
2.修复若干问题增强稳定性
# SDK1.6.3
1.xCode7.2 构建的sdk包。
2.请使用xCode7.2进行编译。
3. 需要在Build
Phases中Link  Security.framework
4.修复若干小问题。
# SDK1.6.2
1、xCode7.1构建的sdk包
2、请使用xCode7.1进行编译
# SDK1.6.1
1、修复armv7s下,bitcode可能编译不过
2、解决warning
# SDK1.6
1、iOS 9系统策略更新,限制了http协议的访问,此外应用需要在“Info.plist”中将要使用的URL
Schemes列为白名单,才可正常检查其他应用是否安装。
受此影响,当你的应用在iOS9中需要使用微信SDK的相关能力(分享、收藏、支付、登录等)时,需要在“Info.plist”里增加如下代码:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>weixin</string>
</array>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
2、开发者需要在工程中链接上CoreTelephony.framework
3、解决bitcode编译不过问题
# SDK1.5
1、废弃safeSendReq:接口,使用sendReq:即可。
2、新增+(BOOL)
sendAuthReq:(SendAuthReq*) req viewController : (UIViewController*)
viewController delegate:(id<WXApiDelegate>) delegate;
支持未安装微信情况下Auth,具体见WXApi.h接口描述
3、微信开放平台新增了微信模块用户统计功能,便于开发者统计微信功能模块的用户使用和活跃情况。开发者需要在工程中链接上:SystemConfiguration.framework,libz.dylib,libsqlite3.0.dylib。

实现效果图

未命名图片.png

源码: https://github.com/andli0626/wx_sharedemo_for_iOS-V1.7.1.git

万事开头难,完成一个简单文本分享,后面的其他API的使用就可以参考官方文档,一步步实践了。

版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

热门文章
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
标签列表