关键字:微信开放平台 Android第三方应用接入微信
微信平台开放后倒是挺火的,许多第三方应用都想试下,毕竟可以利用微信
建立起来的关系链来拓展自己的应用还是挺不错的,可以节约很多在社交方
面的开销,我最近由于实习需要也在研究这个东西,不过发现网上的相关资
料还是挺少的,这里把我的整个研究情况给出来,希望可以共同学习。
第三方应用接入微信平台(1)
二、第三方应用与微信通信的时序图
2、接收微信的请求信息

前面四步和之前的“1、向微信发送消息”是一样的,不需要重复执行,这里给出来只是为了
流程的整体性。当我们注册后,应用图标会出现在微信聊天的列表中,点击加号即可去添加,
添加后,如果聊天时点击应用图标将会回调第三方应用,如上面时序图所示。这里补充一点,
当我们向微信发消息的媒体类型是appdata类型,即WXAppExtendObject对象时,好友在
收到消息时点击消息,会出现类似的回调过程,需要修改的就是此时onReq被调用时,type
为ConstantsAPI.COMMAND_SHOWMESSAGE_FROM_WX而不是ConstantsAPI.COMMAND_GETMESSAGE_FROM_WX 。
当我们在onReq方法中接到ConstantsAPI.COMMAND_GETMESSAGE_FROM_WX
类型的消息时,如果想要把响应发回微信,可用如下代码段来实现

可以发现响应的消息对象和发请求是一样的,下面看看效果图
这是聊天窗口,前提是你已经点击加号将应用添加到下面的列表中

此时,如果点击第三方应用,会回调我们设置好的界面

这个界面是自己定义的,你可以在接到微信的请求后自定义响应界面。
说了半天,还没说到onReq方法或是前面讲的onResp方法的由来,
也就是说如果我们想要处理给微信发请求后的回馈或是响应微信的请求
应该怎么做,我们需要下面3步操作:
a. 可以在你的包名相应目录下新建一个wxapi目录,并在该wxapi目录下新增一个
WXEntryActivity类,该类继承自Activity(当然这个路径是自定义的,随便你自己)
并在manifest文件里面加上exported属性,设置为true,例如:
<activity
android:name=".wxapi.WXEntryActivity"
android:exported="true"
android:label="@string/app_name"
android:launchMode="singleTop" >
b. 实现IWXAPIEventHandler接口,微信发送的请求将回调到onReq方法,发送
到微信请求的响应结果将回调到onResp方法
终于出现了这两个神奇的方法,可以看看他们的大致用法
@Override
public void onReq(BaseReq req) {
switch (req.getType()) {
case ConstantsAPI.COMMAND_GETMESSAGE_FROM_WX:
goToGetMsg();
break;
case ConstantsAPI.COMMAND_SHOWMESSAGE_FROM_WX:
goToShowMsg((ShowMessageFromWX.Req) req);
break;
default:
break;
}
}
@Override
public void onResp(BaseResp resp) {
int result = 0;
switch (resp.errCode) {
case BaseResp.ErrCode.ERR_OK:
result = R.string.errcode_success;
break;
case BaseResp.ErrCode.ERR_USER_CANCEL:
result = R.string.errcode_cancel;
break;
case BaseResp.ErrCode.ERR_AUTH_DENIED:
result = R.string.errcode_deny;
break;
default:
result = R.string.errcode_unknown;
break;
}
Toast.makeText(this, result, Toast.LENGTH_LONG).show();
}
c. 在WXEntryActivity中将接收到的intent及实现了IWXAPIEventHandler接口的对
象传递给IWXAPI接口的handleIntent方法:
api.handleIntent(intent, this);
ok,这三步可以结合时序图一起来理解,都可以一一对应的。
最后给出一些注意点,也是容易混淆的,我都写过Demo验证过了,如果大家觉得有
不对的,欢迎指出,欢迎讨论
1、注册是本地注册,且只需要注册一次,但是在发送的时候微信服务器会检测第三方
应用的合法性
2、说白了就是在本地第三方应用将要发送的内容先发给微信进程,微信进程收到后再
将消息发给自己的微信好友
3、卸载或者反注册后,第三方应用将不会出现在本机微信的可添加应用列表中
4、使用微信开放平台发送的媒体对象中,网页,音频和视频只能是网络URL,图片可
发送本地路径,本地字节数据,网络URL,文件可以发送本地字节数据和本地路径,
附带在媒体对象中的字节数组,微信默认会是点击则给出下载界面,下载后存储的
路径是在/sdcard/Tecent/MicroMsg/本机微信帐号(一般是一串字母数字的组合体)/attachment
文件夹下,这个路径不需要自己去记录,微信会在媒体对象的filepath字段中记录,此时一定注意的是
当你响应微信的show请求时,媒体对象中的filedata字段是为空的,即使你在发送的时候附带在了这个
字段中,如前面所说,只能用filepath这个字段。
如果要自行处理只能是appdata类型数据,理由下面给出:
appdata类型的对象唯一特殊点就只是告诉微信这个消息点击时需要调用第三方应用,
而其他类型的媒体对象被点击时所显示的是微信的默认页面
5、微信根据transaction字段决定消息在聊天框中的表现以及点击后的响应,只有
appdata被点击时可以调用第三方应用的进程,所触发的方法是实现了IWXAPIEventHandler
接口的类的onReq方法,类型是ConstantsAPI.COMMAND_SHOWMESSAGE_FROM_WX
而在微信中和好友聊天时点击第三方应用图标所所触发的方法是实现了IWXAPIEventHandler
接口的类的onReq方法,类型是ConstantsAPI.COMMAND_GETMESSAGE_FROM_WX
6、微信会根据第三方应用是否注册来给出应用安装的信息,比如传给微信好友一个音频消息时,
当好友点击那个消息,微信会以一个WebView来load音频消息中的URL,不过在此前会在URL
后面附加一些微信定义的信息,其中就会包括一个字段是isInstalled
有关微信包装后的URL的具体格式,我们可以将网络断开,然后再去点击,这时自然就出现了那个
经典界面,你也就可以看到URL的真面目了
注:本博客的原创文章欢迎转载,但是请注明转载地址,否则将追究法律责任,
谢谢合作,希望共同学习。
分享到:
相关推荐
在Android应用开发中,接入第三方登录服务是一种常见的需求,它能提供用户更加便捷的登录体验。本示例主要关注的是微信登录以及分享功能的实现,这对于提升用户互动性和应用的社交化至关重要。以下是对这些知识点的...
在Android平台上,第三方应用接入微信平台是一个常见的需求,旨在利用微信庞大的用户基础和社交网络来扩展应用的功能和服务。本文将探讨接入过程中的一些关键知识点,主要包括微信SDK的主要类、消息对象、通信类以及...
微信开放平台 : https://open.weixin.qq.com/ 一、准备工作 : 1. Android Studio环境下:在build.gradle文件中,添加如下依赖即可: dependencies { implementation'...
在Android开发中,集成第三方社交平台的分享功能是常见的需求,比如QQ、微信和微博。这些功能能够增强用户的互动体验,提升应用的社交影响力。本文将深入探讨如何在Android应用中实现QQ、微信和微博的分享功能,并...
在Unity游戏开发中,接入第三方服务如微信登录、分享和支付功能,以及支付宝SDK,能够极大地提升用户体验并促进用户互动。下面将详细讲解如何在Unity中实现这些功能。 首先,我们要明白Unity是一个跨平台的游戏开发...
在Unity游戏开发中,接入微信SDK是为了实现与微信平台的互动功能,比如用户登录、分享、支付等。本文将详细讲解如何在Unity中接入适用于Android平台的微信SDK。 首先,你需要下载微信官方提供的Android SDK。这个...
在这个"shareSDK android第三方qq,微信登录"的主题中,我们将深入探讨如何使用ShareSDK实现QQ和微信的第三方登录功能。 首先,ShareSDK是MobTech推出的一款社会化组件化服务平台,支持包括QQ、微信在内的众多社交...
*使用第三方支付平台来实现微信支付功能。 *使用开源的微信支付库来实现微信支付功能。 Android接入微信支付的应用场景包括: *在线商城APP *游戏APP *社交媒体APP *在线教育APP Android接入微信支付的发展...
本文将深入解析第三方App如何接入微信登录,帮助开发者了解整个过程的关键步骤和技术细节。 ### 1. 注册与创建应用 首先,开发者需要在微信开放平台(https://open.weixin.qq.com/)完成注册,成为正式的微信...
微信开放平台为开发者提供了API接口,允许第三方应用接入微信,实现社交分享、用户授权登录等功能。为了使用微信授权登录,我们需要在微信开放平台上注册一个应用,并获取到AppID和AppSecret,这两个是与微信服务器...
在Android开发中,接入微信登录是一项常见的需求,...整个过程涉及到Android的权限管理、第三方库的集成、Activity的生命周期以及网络通信等多方面知识,理解并熟练掌握这些内容,对于Android开发者来说是非常重要的。
在本主题中,我们将深入探讨"Android微信应用签名"的相关知识点,这涉及到微信平台对于第三方应用接入的要求以及Android应用签名的基本原理。 首先,Android应用签名是Android系统用来验证应用来源、防止篡改和确保...
微信支付接口为商户提供了接入微信支付平台的能力,使得商户可以方便地在自己的应用或网站中集成微信支付功能,从而为用户提供更加便捷的支付体验。 微信支付V2版本的支付接口是微信支付早期版本的一部分,随着技术...
这个“android第三方微信登录.7z”压缩包很可能是提供了一个完整的示例项目,帮助开发者理解和实现微信登录的功能。下面我们将深入探讨相关的知识点。 1. **第三方登录集成**:第三方登录是应用开发中的一个常见...
- 完成创建后,系统会分配给你一个APPid和APPsecret,它们是应用接入微信登录的基础。 2. **集成微信SDK**: - 微信提供了针对不同平台(如Android、iOS、Web等)的SDK,下载并集成到你的项目中。SDK包含了实现...
微信开放平台为开发者提供了丰富的API接口,允许第三方应用接入微信,实现用户授权登录、数据共享等功能。在使用微信登录和分享前,开发者需要先在微信开放平台上注册并创建应用,获取到AppID和AppSecret。 2. **...
本资源“Unity第三方微信支付安卓端工程”提供了一个专门为Unity设计的、用于接入微信支付的Android解决方案。这个解决方案使得Unity游戏可以无缝地与微信支付系统进行交互,为玩家提供便捷的付费体验。 首先,我们...
在Android应用开发中,为了提供用户更便捷的登录和社交分享功能,开发者常常会集成第三方社交平台,如QQ、微信和微博。友盟作为一个国内知名的移动应用服务提供商,提供了这样的集成服务,帮助开发者轻松实现这些...