ios应用接入微信开放平台

ios应用接入微信开放平台

大家好,又见面了,我是全栈君。

前几天试了一下服务端接入微信公众平台,昨天又看了一下APP接入开放平台

开放平台和公众平台的差别

公众平台针对的是公众账号,除了提供管理后台之外。也开放了若干接口,让微信server和开发人员自己的应用系统可以对接

开放平台是微信的总体接入方式。不局限于公众账号(订阅号,服务号)。移动APP和web应用也能够通过开放平台。实现与微信对接。能够说,公众平台的API部分,是开放平台的一个子集

开放平台大体上分为3个部分。分别针对移动APP,WEB应用。公众账号的接入

移动APP接入开放平台的作用

眼下,移动APP接入微信开放平台后,能够获得下面的特性:

1、向微信好友发消息

2、发消息到朋友圈

3、收藏内容到“我的收藏”

4、用微信账号登陆APP。获得微信账号的信息

5、支持微信支付

在朋友圈能够看到一个消息后面跟着“来自XXX”,这就是XXX应用接入开放平台后得到的能力

ios app接入方式

流程和代码都不复杂,详细方法请看开放平台官网。本文不赘述。仅仅提醒一点,须要在xcode里配置你自己APP的URL Type,URL Schemas须要填写微信开放平台提供的那个app id。假设漏掉了这一步,一样能够发消息到微信,可是发完消息以后就无法从微信再跳转回你的APP了,由于微信client也是通过openURL方法。跳回你的APP。须要你的APP自己注冊上URL Schemas

对接微信的原理

首先,一个大的限制是,APP不可能通过微信提供的SDK。直接把消息发到微信server上。

而是从开发人员的APP中,打开微信应用。然后还是由微信把消息发出去,再跳回开发人员自己的APP。也就是说,APP和微信的交互,是通过应用间跳转来完毕的,所以核心还是iOS的这2个方法:

- (BOOL)openURL:(NSURL*)url;

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation

发送消息的代码是:

[WXApi sendReq:req];

微信SDK当然不是开源的,所以从这行代码我们看不出什么。

可是非常easy想到。跳转到还有一个app的方式在iOS中就是openURL方法。所以这行代码做的事情,类似于:

NSString *weixinURL = @"weixin_schema://app_id?title=xxx&content=xxx";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:weixinURL]];

通过weixin_schema,打开了机器上安装的微信应用。在URL末尾加入了相关參数。微信解析后处理。然后在微信里把消息发出去以后,微信也会调用openURL,又回到了开发人员自己的APP:

URL地址是,wx_xxxxxxxxxxx://platformId=wechat

这个URL被AppDelegate中的这种方法拦截:

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

然后handleOpenURL方法调用了:

-(void) onResp:(BaseResp*)resp
{
    NSString *strTitle = [NSString stringWithFormat:@"发送消息结果"];
    NSString *strMsg = [NSString stringWithFormat:@"errcode: %d", resp.errCode];
    
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:strTitle message:strMsg delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
    ;
}

整个交互的原理就是这样。详细到对接的代码里,主要是2个流程:

1、应用主动发消息给微信。应用调用sendReq方法,然后在onResp方法里处理微信的响应

2、微信发消息给应用。

应用在onReq里处理微信的请求。然后调用sendResp方法发响应到微信

然后这2个流程里用到的參数,都是微信SDK里提供的封装类,如SendMessageToWXReq,WXMediaMessage等

对接微信的限制

如上所述,因为SDK并没有提供应用直接发送请求到微信server的能力,而仅仅能带參数跳转到微信APP,所以接入的限制还是比較大的。非常多事情都做不了。

比方说。用户的设备上一定要装有微信,并且已经处于登陆状态。因此非常多for iPad的APP。就非常难对接微信。由于会在iPad上安装微信的用户是非常少的,一般都是装在手机上

还有,也无法实如今自己的APP里选定用户发送,仅仅能是编辑好内容,跳到微信里,在微信通讯录里选要发送的好友

也不能依据手机号。直接向微信账号发送申请加为好友的请求

……

虽然如此,对接微信之后,对APP的社交传播还是有较大的价值,所以如今能够看到大部分的APP。都有接入微信的功能

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116378.html原文链接:https://javaforall.net

(0)
上一篇 2022年1月22日 上午10:00
下一篇 2022年1月22日 上午10:00


相关推荐

  • chcp 使用及解析

    chcp 使用及解析Win R gt 进入 cmd 命令行 chcp nbsp 显示活动控制台代码页数量 或更改该控制台的活动控制台代码页 如果在没有参数的情况下使用 则 chcp 显示活动控制台代码页的数量 nbsp 语法 nbsp chcp nnn nbsp 参数 nbsp 指定代码页 下表列出了所有支持的代码页及其国家 地区 或者语言 nbsp 代码页 nbsp nbsp nbsp nbsp nbsp nbsp 国家 地区 或语言 nbsp 437 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 美国 nbsp 708 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 阿拉伯文 ASMO7

    2026年3月19日
    2
  • android 存储作假,对《纯活人伪造一个Android Killer或APK IDE或apktool反编译失败》的一点讨论…

    android 存储作假,对《纯活人伪造一个Android Killer或APK IDE或apktool反编译失败》的一点讨论…法王遇到的问题平时也遇到过 作为小白 也想参与讨论一下心得 奈何不知道怎么在回帖的时候插入图片 所以另起一个帖子 遇到的这个问题 个人觉得其实是反编译软件对多 dex 的 app 支持的问题 具体问题是插件本身不支持 还是插件已经支持了 但软件本身没有更新不支持 因为知识储备不够 无法得出结论 一 测试 androidkille 反编译结果 1 jpg 88 67KB 下载次数 0 2018 1

    2025年10月15日
    6
  • java的前端还是后端_java语言是开发前端还是后端的[通俗易懂]

    java的前端还是后端_java语言是开发前端还是后端的[通俗易懂]java语言是开发前端还是后端的发布时间:2020-06-2616:01:18来源:亿速云阅读:105作者:Leahjava语言是开发前端还是后端的?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。java不是前端,是后端。Java语言是最常见的后端开发语言之一,Java语言由于自身具备构建多线程的能力,且体系结构比较中…

    2022年7月7日
    20
  • html5 drm,Xvast – 极速安全浏览器 – PDF加密,浏览器DRM,音频视频加密, HTML5视频DRM, 网页HTML加密, Javascript加密, 在线视频加密, 音视频加密…

    html5 drm,Xvast – 极速安全浏览器 – PDF加密,浏览器DRM,音频视频加密, HTML5视频DRM, 网页HTML加密, Javascript加密, 在线视频加密, 音视频加密…最近更新 Windows Xvast 内核更新到 Chrome92 修复 bug 1 3 0 1 2021 年 06 月 23 日 Android 安全性更新 1 2 0 5 2021 年 06 月 10 日 Android 安全性更新 1 2 0 4 2021 年 05 月 27 日 Windows 安全性更新 1 2 1 0 2021 年 05 月 21 日 Windows 支持打开受 DRM X4

    2026年3月16日
    2
  • JSON的两个方法(JSON转字符串和字符串转JSON)

    JSON的两个方法(JSON转字符串和字符串转JSON)JSON 的两个方法 JSON 转字符串和字符串转 JSON JSONjavaScri JSON 是一种数据格式只要符合 key value 这种格式的都叫做 JSON 数组是 JSON 的一种对象也是 JSON 的一种 JSON 是一种数据格式 他有多种表现形式 第一种就是数组和对象 第二种就是字符串形式 varobj

    2026年3月18日
    1
  • 电子与信息学报 投稿填坑

    电子与信息学报 投稿填坑电子与信息学报投稿填坑觉得有用的话 欢迎一起讨论相互学习 FollowMe 电子与信息学报 总体来说属于比较好的期刊了 总结一下格式要求模板下载各种细节文献序号使用上标 有作者姓名的标在作者右上角 除非 文献 提出 使用平排 和 IEEE 的不同 IEEE 都是平排 缩写 要求英文摘要和关键词中 全文在前 缩写词写在括号内正文中出现英文缩写 有中文名称的 括号内为 英文全

    2026年3月26日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号