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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mybatis一级缓存和二级缓存工作方式_redis二级缓存

    mybatis一级缓存和二级缓存工作方式_redis二级缓存系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章Python机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录前言二、mybatis二级缓存:出现的原因:二级缓存介绍:二级缓存清除策略:事务管理策略:二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了

    2022年9月20日
    2
  • 视屏剪辑软件 & free video editor

    视屏剪辑软件 & free video editor视屏剪辑软件&freevideoeditorpurposeaddanimationkeyframetotutorialsvideovlogdemostutorial

    2022年6月30日
    26
  • Mask_RCNN训练自己的数据——制作COCO格式的数据集[通俗易懂]

    Mask_RCNN训练自己的数据——制作COCO格式的数据集[通俗易懂]matterport版mask_rcnn系列:1.Mask_RCNN训练自己的数据2.目标检测:使用Open_cv在图像上批量画boundingbox3.Mask_RCNN:使用COCO权重进行特定类别预测(只标记出你需要的类别)4.Mask_RCNN:ValueError:Dimension1inbothshapes……………

    2022年10月4日
    2
  • npm使用国内淘宝镜像

    npm使用国内淘宝镜像原文地址:https://blog.csdn.net/quuqu/article/details/64121812介绍安装NodeJS之后使用npm来安装包使用的是国外的地址,经常会出现超时错误,可以通过修改为国内的淘宝源来加速安装。配置临时使用npm–registryhttps://registry.npm.taobao.orginstallexpress永久使用直…

    2025年8月14日
    3
  • string null转空字符串(空字符串是什么意思)

    今天在自己之前做的项目中,犯了一个错误,是自己考虑不周。在项目中自己需要,从后台数据库中获取数据,然后将数据转成Int类型。但是自己忽略了数据为空的情况。例如:在这里,String字符串为空,用Integer.parseInt()方法进行转换报错。修改之后如下今天自己的错误,导致现场人员在给客户展…

    2022年4月11日
    80
  • 工作流引擎 Activiti 万字详细入门

    工作流引擎 Activiti 万字详细入门Activiti7一、工作流介绍1.1概念工作流(Workflow),就是通过计算机对业务流程自动化执行管理。它主要解决的是“使在多个参与者之间按照某种预定义的规则自动进行传递文档、信息或任务的过程,从而实现某个预期的业务目标,或者促使此目标的实现”。1.2工作流系统一个软件系统中具有工作流的功能,我们把它称为工作流系统,一个系统中工作流的功能是什么?就是对系统的业务流程进行自动化管理,所以工作流是建立在业务流程的基础上,所以一个软件的系统核心根本上还是系统的业务流程,工作流只是协助进行业务流

    2022年7月11日
    24

发表回复

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

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