zoukankan      html  css  js  c++  java
  • 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];
        [alert show];
    }

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

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

    2、微信发消息给应用。

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

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

    对接微信的限制

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

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

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

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

    ……

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


  • 相关阅读:
    static,匿名对象
    构造方法
    面向对象
    数组拷贝,可变参数,foreach
    毕业设计 之 七 参考文献综述
    毕业设计 之 六 网站搭建学习笔记
    毕业设计 之 五 PHP语法学习笔记
    毕业设计 之 四 英文资料翻译
    毕业设计 之 三 mooodle及bigbluebutton使用笔记(未完成)
    毕业设计 之 二 PHP集成环境(Dreamweaver)使用
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5118883.html
Copyright © 2011-2022 走看看