具体参见微信的例子,我这里只是简单讲讲需要的步骤:
- 首先需要去开放平台申请用户并通过审核,地址是:http://open.weixin.qq.com/;
- 成为开发者之后你需要申请一个应用,并且得到一个AppID,这里需要注意的是你需要提交你的包名(Android和iOS都需要),这个AppID需要记录下来供客户端程序使用;
- 代码集成;
- 完成集成后iOS版的已经可以用了;
- Android版本还需要使用应用的正式签名打个apk,安装到手机上,然后去下载一个应用http://open.weixin.qq.com/download/?lang=zh_CN,这个工具安装到手机上,并且输入你的App的包名,然后得到你的应用签名,并且填写到你在你的应用审核的相应的信息页面;
- 然后你的应用需要提交审核,大概等3个工作日之后你就可以开始测试了,之前你只能看微信的测试代码,或者像我这样把微信相关的功能封装成一个工具类,然后在微信的测试程序上调试通过后集成到应用中,然后等待微信审核通过,注意这时你是没办法在你的程序中调试你的应用的;
- 等到你的应用审核通过,你就可以测试了,但是注意:微信的分享功能会验证三个信息(Android版本):应用包名+签名文件+审核信息,所以一定要等你的应用通过审核之后才能通过签名包完成测试,不能debug!(微信的官方文档说的是不需要等应用审核通过就可以测试,但我这里确实等到审核通过之后才可以);
最好附上测试代码,可以用微信的测试程序中提供的debug.store测试:
import java.net.URL;
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import com.tencent.mm.sdk.openapi.IWXAPI;
import com.tencent.mm.sdk.openapi.SendMessageToWX;
import com.tencent.mm.sdk.openapi.WXAPIFactory;
import com.tencent.mm.sdk.openapi.WXImageObject;
import com.tencent.mm.sdk.openapi.WXMediaMessage;
import com.tencent.mm.sdk.openapi.WXTextObject;
import com.tencent.mm.sdk.platformtools.Util;
@SuppressLint("HandlerLeak")
public class WeChatUtil {
private static final int MSG_FINISH_DOWNLOAD = 1;
private String appId = null;
private Context context = null;
private IWXAPI api = null;
private String url = null;
public WeChatUtil(Context context, String appId) {
this.context = context;
this.appId = appId;
}
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MSG_FINISH_DOWNLOAD:
try {
Bitmap bmp = (Bitmap) msg.obj;
WXImageObject imageObject = new WXImageObject();
imageObject.imageUrl = url;
Log.i("===========WX=============", imageObject.imageUrl);
WXMediaMessage wxmsg = new WXMediaMessage();
wxmsg.mediaObject = imageObject;
Bitmap thumbBmp = Bitmap
.createScaledBitmap(bmp, 150, 150, true);
if (bmp != null && (!bmp.isRecycled())) {
bmp.recycle();
}
wxmsg.thumbData = Util.bmpToByteArray(thumbBmp, true);
SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = buildTransaction("img");
req.message = wxmsg;
req.scene = SendMessageToWX.Req.WXSceneSession;
if (!api.sendReq(req)) {
throw new Exception("发送请求失败!");
} else {
System.out.println("分享图片成功, 地址:" + url);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
api.unregisterApp();
}
break;
default:
super.handleMessage(msg);
break;
}
}
};
class WorkingThread extends Thread {
private String url = null;
public WorkingThread(String url) {
this.url = url;
}
@Override
public void run() {
try {
Bitmap bmp = BitmapFactory.decodeStream(new URL(url).openStream());
if (null == bmp) {
throw new Exception("图片解码失败!");
}
// 通知主线程完成更新
Message msg = WeChatUtil.this.handler
.obtainMessage(MSG_FINISH_DOWNLOAD);
msg.obj = bmp;
WeChatUtil.this.handler.sendMessage(msg);
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* 发送网络图片
*/
public void sendHttpImage(String url) {
this.url = url;
api = WXAPIFactory.createWXAPI(context, appId);
try {
boolean wxInstall = api.isWXAppInstalled();
if (!wxInstall) {
throw new Exception("微信未安装!");
}
if (!api.registerApp(appId)) {
throw new Exception("微信API注册失败!");
}
WorkingThread t = new WorkingThread(url);
t.start();
} catch (Exception e) {
e.printStackTrace();
}
}
private String buildTransaction(final String type) {
return (type == null) ? String.valueOf(System.currentTimeMillis())
: type + System.currentTimeMillis();
}
/**
* 发送文字
* @param text
*/
public void sendText(String text) {
api = WXAPIFactory.createWXAPI(context, appId);
try {
boolean wxInstall = api.isWXAppInstalled();
if (!wxInstall) {
throw new Exception("微信未安装!");
}
if (!api.registerApp(appId)) {
throw new Exception("微信API注册失败!");
}
// 初始化一个WXTextObject对象
WXTextObject textObj = new WXTextObject();
textObj.text = text;
// 用WXTextObject对象初始化一个WXMediaMessage对象
WXMediaMessage msg = new WXMediaMessage();
msg.mediaObject = textObj;
// 发送文本类型的消息时,title字段不起作用
// msg.title = "Will be ignored";
msg.description = text;
// 构造一个Req
SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = buildTransaction("text"); // transaction字段用于唯一标识一个请求
req.message = msg;
req.scene = SendMessageToWX.Req.WXSceneSession;
// 调用api接口发送数据到微信
if (!api.sendReq(req))
System.out.println("短消息发送失败!");
api.unregisterApp();
} catch (Exception e) {
e.printStackTrace();
}
}
}
本文详细介绍了如何通过微信开放平台进行应用集成、分享功能实现及审核流程,包括申请开发者资格、获取AppID、代码集成、应用签名与审核等关键步骤。

3492

被折叠的 条评论
为什么被折叠?



