Senparc.Weixin.MP SDK 微信公众平台开发教程(十一):高级接口说明
这里所说的高级接口是指面向通过认证的服务号开通的高级功能。
高级功能大致可以分类为:
- 用户接口
- 分组接口
- 客服接口(有别于之前介绍的多客服)
- 群发接口
- 多媒体接口
- 二维码接口
- 模板消息接口(不是所有账号都可开通)
- OAuth2.0(相对比较复杂,后面会有专门介绍)
以上所有的接口都包含在Senparc.Weixin.MP.AdvancedAPIs命名空间下。
一些共同的操作
几乎所有的高级接口都需要用到AccessToken来通讯(注意,下面如果没有特殊说明的接口都需要这个AccessToken,但并非所有),因此多数会有一个AccessToken参数传入,有关AccessToken获取和操作的方式见Senparc.Weixin.MP SDK 微信公众平台开发教程(八):通用接口说明。
用户接口
源文件文件夹:Senparc.Weixin.MP/AdvancedAPIs/User
源代码中相关方法如下:
namespace Senparc.Weixin.MP.AdvancedAPIs
{
//接口详见:http://mp.weixin.qq.com/wiki/index.php?title=%E8%8E%B7%E5%8F%96%E7%94%A8%E6%88%B7%E5%9F%BA%E6%9C%AC%E4%BF%A1%E6%81%AF /// <summary>
/// 用户接口
/// </summary>
public static class User
{
/// <summary>
/// 获取用户信息
/// </summary>
/// <param name="accessToken">调用接口凭证</param>
/// <param name="openId">普通用户的标识,对当前公众号唯一</param>
/// <param name="lang">返回国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语</param>
/// <returns></returns>
public static UserInfoJson Info(string accessToken, string openId, Language lang = Language.zh_CN)
{
string url = string.Format("https://api.weixin.qq.com/cgi-bin/user/info?access_token={0}&openid={1}&lang={2}",
accessToken, openId, lang.ToString());
return HttpUtility.Get.GetJson<UserInfoJson>(url); //错误时微信会返回错误码等信息,JSON数据包示例如下(该示例为AppID无效错误):
//{"errcode":40013,"errmsg":"invalid appid"}
} /// <summary>
/// 获取关注着OpenId信息
/// </summary>
/// <param name="accessToken"></param>
/// <param name="nextOpenId"></param>
/// <returns></returns>
public static OpenIdResultJson Get(string accessToken, string nextOpenId)
{
string url = string.Format("https://api.weixin.qq.com/cgi-bin/user/get?access_token={0}",
accessToken);
if (!string.IsNullOrEmpty(nextOpenId))
{
url += "&next_openid=" + nextOpenId;
}
return HttpUtility.Get.GetJson<OpenIdResultJson>(url);
}
}
}
分组接口
源文件文件夹:Senparc.Weixin.MP/AdvancedAPIs/Groups
源代码中相关方法如下:
namespace Senparc.Weixin.MP.AdvancedAPIs
{
/// <summary>
/// 用户组接口
/// </summary>
public static class Groups
{ /// <summary>
/// 创建分组
/// </summary>
/// <returns></returns>
public static CreateGroupResult Create(string accessToken, string name)
{
var urlFormat = "https://api.weixin.qq.com/cgi-bin/groups/create?access_token={0}";
var data = new
{
group = new
{
name = name
}
};
return CommonJsonSend.Send<CreateGroupResult>(accessToken, urlFormat, data);
} /// <summary>
/// 发送文本信息
/// </summary>
/// <param name="accessToken"></param>
/// <returns></returns>
public static GroupsJson Get(string accessToken)
{
var urlFormat = "https://api.weixin.qq.com/cgi-bin/groups/get?access_token={0}";
var url = string.Format(urlFormat, accessToken);
return HttpUtility.Get.GetJson<GroupsJson>(url);
} /// <summary>
/// 获取用户分组
/// </summary>
/// <param name="accessToken"></param>
/// <param name="openId"></param>
/// <returns></returns>
public static GetGroupIdResult GetId(string accessToken, string openId)
{
var urlFormat = "https://api.weixin.qq.com/cgi-bin/groups/getid?access_token={0}";
var data = new { openid = openId };
return CommonJsonSend.Send<GetGroupIdResult>(accessToken, urlFormat, data);
} /// <summary>
/// 创建分组
/// </summary>
/// <param name="accessToken"></param>
/// <param name="id"></param>
/// <param name="name">分组名字(30个字符以内)</param>
/// <returns></returns>
public static WxJsonResult Update(string accessToken, int id, string name)
{
var urlFormat = "https://api.weixin.qq.com/cgi-bin/groups/update?access_token={0}";
var data = new
{
group = new
{
id = id,
name = name
}
};
return CommonJsonSend.Send(accessToken, urlFormat, data);
} /// <summary>
/// 移动用户分组
/// </summary>
/// <param name="accessToken"></param>
/// <param name="openId"></param>
/// <param name="toGroupId"></param>
/// <returns></returns>
public static WxJsonResult MemberUpdate(string accessToken, string openId, int toGroupId)
{
var urlFormat = "https://api.weixin.qq.com/cgi-bin/groups/members/update?access_token={0}";
var data = new
{
openid = openId,
to_groupid = toGroupId
};
return CommonJsonSend.Send(accessToken, urlFormat, data);
}
}
}
客服接口
说明一下,这里的客服接口和之前的“多客服”是有差别的,之前介绍的多客服是把用户对话状态切换到多客服客,消息发送到专门的多客服户端,这个对话是由用户主动发起的。而这里的“客服”实际上是指在任意时间,主动推送消息给指定过的用户(用户在48小时内有过互动),对话不需要由用户主动发起。
源文件文件夹:Senparc.Weixin.MP/AdvancedAPIs/Custom
源代码中相关方法如下:
namespace Senparc.Weixin.MP.AdvancedAPIs
{
/// <summary>
/// 客服接口
/// </summary>
public static class Custom
{
private const string URL_FORMAT = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token={0}"; /// <summary>
/// 发送文本信息
/// </summary>
/// <param name="accessToken"></param>
/// <param name="openId"></param>
/// <param name="content"></param>
/// <returns></returns>
public static WxJsonResult SendText(string accessToken, string openId, string content)
{
var data = new
{
touser = openId,
msgtype = "text",
text = new
{
content = content
}
};
return CommonJsonSend.Send(accessToken, URL_FORMAT, data);
} /// <summary>
/// 发送图片消息
/// </summary>
/// <param name="accessToken"></param>
/// <param name="openId"></param>
/// <param name="mediaId"></param>
/// <returns></returns>
public static WxJsonResult SendImage(string accessToken, string openId, string mediaId)
{
var data = new
{
touser = openId,
msgtype = "image",
image = new
{
media_id = mediaId
}
};
return CommonJsonSend.Send(accessToken, URL_FORMAT, data);
} /// <summary>
/// 发送语音消息
/// </summary>
/// <param name="accessToken"></param>
/// <param name="openId"></param>
/// <param name="mediaId"></param>
/// <returns></returns>
public static WxJsonResult SendVoice(string accessToken, string openId, string mediaId)
{
var data = new
{
touser = openId,
msgtype = "voice",
voice = new
{
media_id = mediaId
}
};
return CommonJsonSend.Send(accessToken, URL_FORMAT, data);
} /// <summary>
/// 发送视频消息
/// </summary>
/// <param name="accessToken"></param>
/// <param name="openId"></param>
/// <param name="mediaId"></param>
/// <param name="thumbMediaId"></param>
/// <returns></returns>
public static WxJsonResult SendVideo(string accessToken, string openId, string mediaId, string thumbMediaId)
{
var data = new
{
touser = openId,
msgtype = "video",
video = new
{
media_id = mediaId,
thumb_media_id = thumbMediaId
}
};
return CommonJsonSend.Send(accessToken, URL_FORMAT, data);
} /// <summary>
/// 发送音乐消息
/// </summary>
/// <param name="accessToken"></param>
/// <param name="openId"></param>
/// <param name="title">音乐标题(非必须)</param>
/// <param name="description">音乐描述(非必须)</param>
/// <param name="musicUrl">音乐链接</param>
/// <param name="hqMusicUrl">高品质音乐链接,wifi环境优先使用该链接播放音乐</param>
/// <param name="thumbMediaId">视频缩略图的媒体ID</param>
/// <returns></returns>
public static WxJsonResult SendMusic(string accessToken, string openId, string title, string description,
string musicUrl, string hqMusicUrl, string thumbMediaId)
{
var data = new
{
touser = openId,
msgtype = "music",
music = new
{
title = title,
description = description,
musicurl = musicUrl,
hqmusicurl = hqMusicUrl,
thumb_media_id = thumbMediaId
}
};
return CommonJsonSend.Send(accessToken, URL_FORMAT, data);
} /// <summary>
/// 发送图文消息
/// </summary>
/// <param name="accessToken"></param>
/// <param name="openId"></param>
/// <param name="title">音乐标题(非必须)</param>
/// <param name="description">音乐描述(非必须)</param>
/// <param name="musicUrl">音乐链接</param>
/// <param name="hqMusicUrl">高品质音乐链接,wifi环境优先使用该链接播放音乐</param>
/// <param name="thumbMediaId">视频缩略图的媒体ID</param>
/// <returns></returns>
public static WxJsonResult SendNews(string accessToken, string openId, List<Article> articles)
{
var data = new
{
touser = openId,
msgtype = "news",
news = new
{
articles = articles.Select(z => new
{
title = z.Title,
description = z.Description,
url = z.Url,
picurl = z.PicUrl//图文消息的图片链接,支持JPG、PNG格式,较好的效果为大图640*320,小图80*80
}).ToList()
}
};
return CommonJsonSend.Send(accessToken, URL_FORMAT, data);
}
}
}
群发接口
这里的群发效果和登录微信后台群发是一样的。
源文件文件夹:Senparc.Weixin.MP/AdvancedAPIs/GroupMessage
源代码中相关方法如下:
namespace Senparc.Weixin.MP.AdvancedAPIs
{
/// <summary>
/// 高级群发接口
/// </summary>
public static class GroupMessage
{
/// <summary>
/// 根据分组进行群发
///
/// 请注意:
/// 1、该接口暂时仅提供给已微信认证的服务号
/// 2、虽然开发者使用高级群发接口的每日调用限制为100次,但是用户每月只能接收4条,请小心测试
/// 3、无论在公众平台网站上,还是使用接口群发,用户每月只能接收4条群发消息,多于4条的群发将对该用户发送失败。
///
/// </summary>
/// <param name="accessToken"></param>
/// <param name="groupId">群发到的分组的group_id</param>
/// <param name="mediaId">用于群发的消息的media_id</param>
/// <returns></returns>
public static SendResult SendGroupMessageByGroupId(string accessToken, string groupId, string mediaId)
{
const string urlFormat = "https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token={0}";
var data = new
{
filter = new
{
group_id = groupId
},
mpnews = new
{
media_id = mediaId
},
msgtype = "mpnews"
};
return CommonJsonSend.Send<SendResult>(accessToken, urlFormat, data);
} /// <summary>
/// 根据OpenId进行群发
/// </summary>
/// <param name="accessToken"></param>
/// <param name="mediaId">用于群发的消息的media_id</param>
/// <param name="openIds">openId字符串数组</param>
/// <returns></returns>
public static SendResult SendGroupMessageByOpenId(string accessToken, string mediaId, params string[] openIds)
{
const string urlFormat = "https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token={0}"; var data = new
{
touser = openIds,
mpnews = new
{
media_id = mediaId
},
msgtype = "mpnews"
};
return CommonJsonSend.Send<SendResult>(accessToken, urlFormat, data);
} /// <summary>
/// 删除群发消息
/// </summary>
/// <param name="accessToken"></param>
/// <param name="mediaId">发送出去的消息ID</param>
/// <returns></returns>
public static WxJsonResult DeleteSendMessage(string accessToken, string mediaId)
{
//官方API地址为https://api.weixin.qq.com//cgi-bin/message/mass/delete?access_token={0},应该是多了一个/
const string urlFormat = "https://api.weixin.qq.com/cgi-bin/message/mass/delete?access_token={0}"; var data = new
{
msgid = mediaId
};
return CommonJsonSend.Send<WxJsonResult>(accessToken, urlFormat, data);
}
}
}
多媒体接口
多媒体接口用于上传图片、语音、图文消息等多媒体信息,一般这些信息都可以用于客服接口或群发。
源文件文件夹:Senparc.Weixin.MP/AdvancedAPIs/Media
源代码中相关方法如下:
namespace Senparc.Weixin.MP.AdvancedAPIs
{
//接口详见:http://mp.weixin.qq.com/wiki/index.php?title=%E4%B8%8A%E4%BC%A0%E4%B8%8B%E8%BD%BD%E5%A4%9A%E5%AA%92%E4%BD%93%E6%96%87%E4%BB%B6 /// <summary>
/// 多媒体文件接口
/// </summary>
public static class Media
{
/// <summary>
/// 上传媒体文件
/// </summary>
/// <param name="accessToken"></param>
/// <param name="type"></param>
/// <param name="file"></param>
/// <returns></returns>
public static UploadResultJson Upload(string accessToken, UploadMediaFileType type, string file)
{
var url = string.Format("http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token={0}&type={1}", accessToken, type.ToString());
var fileDictionary = new Dictionary<string, string>();
fileDictionary["media"] = file;
return HttpUtility.Post.PostFileGetJson<UploadResultJson>(url, null, fileDictionary, null);
} /// <summary>
/// 下载媒体文件
/// </summary>
/// <param name="accessToken"></param>
/// <param name="mediaId"></param>
/// <param name="stream"></param>
public static void Get(string accessToken, string mediaId, Stream stream)
{
var url = string.Format("http://file.api.weixin.qq.com/cgi-bin/media/get?access_token={0}&media_id={1}",
accessToken, mediaId);
HttpUtility.Get.Download(url, stream);
} /// <summary>
/// 上传图文消息素材
/// </summary>
/// <param name="accessToken">Token</param>
/// <param name="news">图文消息组</param>
/// <returns></returns>
public static UploadMediaFileResult UploadNews(string accessToken, params NewsModel[] news)
{
const string urlFormat = "https://api.weixin.qq.com/cgi-bin/media/uploadnews?access_token={0}";
var data = new
{
articles = news
};
return CommonJsonSend.Send<UploadMediaFileResult>(accessToken, urlFormat, data);
} }
}
二维码接口
使用二维码接口可以方便地创建和验证二维码。所创建的二维码用于让用户关注或识别扫描的场景。
源文件文件夹:Senparc.Weixin.MP/AdvancedAPIs/QrCode
源代码中相关方法如下:
namespace Senparc.Weixin.MP.AdvancedAPIs
{
//API:http://mp.weixin.qq.com/wiki/index.php?title=%E7%94%9F%E6%88%90%E5%B8%A6%E5%8F%82%E6%95%B0%E7%9A%84%E4%BA%8C%E7%BB%B4%E7%A0%81 /// <summary>
/// 二维码接口
/// </summary>
public static class QrCode
{
/// <summary>
/// 创建二维码
/// </summary>
/// <param name="expireSeconds">该二维码有效时间,以秒为单位。 最大不超过1800。0时为永久二维码</param>
/// <param name="sceneId">场景值ID,临时二维码时为32位整型,永久二维码时最大值为1000</param>
/// <returns></returns>
public static CreateQrCodeResult Create(string accessToken, int expireSeconds, int sceneId)
{
var urlFormat = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token={0}";
object data = null;
if (expireSeconds > )
{
data = new
{
expire_seconds = expireSeconds,
action_name = "QR_SCENE",
action_info = new
{
scene = new
{
scene_id = sceneId
}
}
};
}
else
{
data = new
{
action_name = "QR_LIMIT_SCENE",
action_info = new
{
scene = new
{
scene_id = sceneId
}
}
};
}
return CommonJsonSend.Send<CreateQrCodeResult>(accessToken, urlFormat, data);
} /// <summary>
/// 获取二维码(不需要AccessToken)
/// 错误情况下(如ticket非法)返回HTTP错误码404。
/// </summary>
/// <param name="ticket"></param>
/// <param name="stream"></param>
public static void ShowQrCode(string ticket, Stream stream)
{
var urlFormat = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket={0}";
HttpUtility.Get.Download(string.Format(urlFormat, ticket), stream);
}
}
}
模板消息接口
模板消息类似于短信通知,它遵循一定的模板格式(和图文信息等不一样),不是每个通过验证的服务号都可以获取。
源文件文件夹:Senparc.Weixin.MP/AdvancedAPIs/TemplateMessage
源代码中相关方法如下:
namespace Senparc.Weixin.MP.AdvancedAPIs
{
/// <summary>
/// 模板消息接口
/// </summary>
public static class Template
{
public static WxJsonResult SendTemplateMessage<T>(string accessToken, string openId, string templateId, string topcolor, T data)
{
const string urlFormat = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={0}";
var msgData = new TempleteModel()
{
template_id = templateId,
topcolor = topcolor,
touser = openId,
data = data
};
return CommonJsonSend.Send<WxJsonResult>(accessToken, urlFormat, msgData);
}
}
}
OAuth2.0接口
OAuth接口用于安全验证使用微信内嵌浏览器访问的用户的身份(例如获取OpenId)
源文件文件夹:Senparc.Weixin.MP/AdvancedAPIs/OAuth
相比其他接口OAuth2.0略微复杂,相关内容将在下一篇专门进行介绍:《Senparc.Weixin.MP SDK 微信公众平台开发教程(十二):OAuth2.0说明》
系列教程索引
地址:http://www.cnblogs.com/szw/archive/2013/05/14/weixin-course-index.html
- Senparc.Weixin.MP SDK 微信公众平台开发教程(一):微信公众平台注册
- Senparc.Weixin.MP SDK 微信公众平台开发教程(二):成为开发者
- Senparc.Weixin.MP SDK 微信公众平台开发教程(三):微信公众平台开发验证
- Senparc.Weixin.MP SDK 微信公众平台开发教程(四):Hello World
- Senparc.Weixin.MP SDK 微信公众平台开发教程(五):使用Senparc.Weixin.MP SDK
- Senparc.Weixin.MP SDK 微信公众平台开发教程(六):了解MessageHandler
- Senparc.Weixin.MP SDK 微信公众平台开发教程(七):解决用户上下文(Session)问题
- Senparc.Weixin.MP SDK 微信公众平台开发教程(八):通用接口说明
- Senparc.Weixin.MP SDK 微信公众平台开发教程(九):自定义菜单接口说明
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十):多客服接口说明
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十一):高级接口说明
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十二):OAuth2.0说明
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十三):地图相关接口说明
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十四):请求消息去重
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十五):消息加密
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十六):AccessToken自动管理机制
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十七):个性化菜单接口说明
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十八):Web代理功能
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十九):MessageHandler 的未知类型消息处理
- Senparc.Weixin.MP SDK 微信公众平台开发教程(二十):使用菜单消息功能
- Senparc.Weixin.MP SDK 微信公众平台开发教程(二十一):在小程序中使用 WebSocket (.NET Core)
- Senparc.Weixin.MP SDK 微信公众平台开发教程(二十二):如何安装 Nuget(dll) 后使用项目源代码调试
Senparc.Weixin.MP SDK 微信公众平台开发教程(十一):高级接口说明的更多相关文章
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十八):Web代理功能
在Senparc.Weixin.dll v4.5.7版本开始,我们提供了Web代理功能,以方便在受限制的局域网内的应用可以顺利调用接口. 有关的修改都在Senparc.Weixin/Utilities ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十七):个性化菜单接口说明
前不久微信上线了个性化菜单接口,Senparc.Weixin SDK也已经同步更新. 本次更新升级Senparc.Weixin.MP版本到v13.5.2,依赖Senparc.Weixin版本4.5.4 ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(三):微信公众平台开发验证
要对接微信公众平台的"开发模式",即对接到自己的网站程序,必须在注册成功之后(见Senparc.Weixin.MP SDK 微信公众平台开发教程(一):微信公众平台注册),等待官方 ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(四):Hello World
============= 以下写于2013-07-20 ============= 这一篇文章其实可以写在很前面,不过我还是希望开发者们尽多地了解清楚原理之后再下手. 通过上一篇Senparc.W ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(五):使用Senparc.Weixin.MP SDK
Senparc.Weixin.MP SDK已经涵盖了微信6.x的所有公共API. 整个项目的源代码以及已经编译好的程序集可以在这个项目中获取到:https://github.com/JeffreySu ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(六):了解MessageHandler
上一篇<Senparc.Weixin.MP SDK 微信公众平台开发教程(五):使用Senparc.Weixin.MP SDK>我们讲述了如何使用Senparc.Weixin.MP SDK ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(七):解决用户上下文(Session)问题
从这篇文章中我们已经了解了微信公众平台消息传递的方式,这种方式有一个先天的缺陷:不同用户的请求都来自同一个微信服务器,这使得常规的Session无法使用(始终面对同一个请求对象,况且还有对方服务器Co ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(八):通用接口说明
一.基础说明 这里说的“通用接口(CommonAPIs)”是使用微信公众账号一系列高级功能的必备验证功能(应用于开发模式). 我们通过微信后台唯一的凭证,向通用接口发出请求,得到访问令牌(Access ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(九):自定义菜单接口说明
上一篇<Senparc.Weixin.MP SDK 微信公众平台开发教程(八):通用接口说明>介绍了如何通过通用接口获取AccessToken,有了AccessToken,我们就可以来操作 ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十):多客服接口说明
微信官方的多客服接口原理是通过用户发送的信息,开发者服务器返回一条指定类型的响应信息,使用户的对话状态切换到官方的多客服状态(持续一段时间),这段时间内用户发送的所有信息都不会到达开发者的服务器,而是 ...
随机推荐
- 关于几种编码详解(Unicode,UTF-8,GB系列)
最近学Python,老是被编码的问题搞得晕乎乎的,晚上看了好多篇博客,整理出来一个比较清晰的关于几种编码以及字符集的思路. 主要参考:http://blog.sina.com.cn/s/blog_6d ...
- cxf+spring+数字签名开发webservice(一)
数字证书的准备 下面做的服务端和客户端证书在例子中无法加解密,不知道什么原因,我是使用正式环境中的客户端和服务端进行开发测试的,所以需要大家自己去准备证书,或者有人知道为什么jdk生成 ...
- freeCodeCamp:Seek and Destroy
金克斯的迫击炮! 实现一个摧毁(destroyer)函数,第一个参数是待摧毁的数组,其余的参数是待摧毁的值. 当你完成不了挑战的时候,记得开大招'Read-Search-Ask'. 这是一些对你有帮助 ...
- firefox的console log功能
http://www.ruanyifeng.com/blog/2011/03/firebug_console_tutorial.html Firebug是网页开发的利器,能够极大地提升工作效率. 但是 ...
- 一些webGL的资源
作为一个新手,把资源写在这里. 一个简介: http://www.html5china.com/HTML5features/WebGL/20111129_2985.html 类似NEHE OPENGL ...
- Unity加载模块深度解析(纹理篇)
在游戏和VR项目的研发过程中,加载模块所带来的效率开销和内存占用(即“加载效率”.“场景切换速度”等)经常是开发团队非常头疼的问题,它不仅包括资源的加载耗时,同时也包含场景物件的实例化和资源卸载等.在 ...
- Android Sqlite 工具类封装
鉴于经常使用 Sqlite 数据库做数据持久化处理,进行了一点封装,方便使用. 该封装类主要支持一下功能 支持多用户数据储存 支持 Sqlite数据库升级 支持传入 Sql 语句建表 支持 SQLit ...
- linux下解压被分割的zip文件
形如被分割的一系列文件:linux.z01, linux.z02, linux.z03, linux.zip 直接右键解压是不行的. 首先合并文件:cat linux.* > linux_all ...
- label下面放置select的问题
今天做项目的时候突然发现一个问题. html标签label的用法分两种: <label for="name">姓名:</label><input id ...
- SQL 2008无法连接的解决办法
问题: 在从本地客户端连接到SQL 2008的时候出现无法连接的错误.错误信息如下所示: