抓信SDK集成教程(Tomcat+MySQL)

欢迎访问抓信InfBox SDK开发者 帮助中心! 我们将在这里发布关于抓信SDK的使用说明.
抓信官网地址是: https://www.infbox.com .
您可以在苹果应用商店、腾讯应用宝、百度手机助手、360手机助手、小米应用商店、魅族应用商店、华为应用商店搜索‘抓信’,下载抓信APP.
抓信SDK目前推出了Java版的SDK,并给出了一个基于Tomcat+MySQL的社群系统Demo.
我们稍后将推出基于抓信SDK的开源任务管理系统。

抓信是什么

抓信是一款手机APP,旨在帮助手机用户获取真正有价值的信息,避免垃圾信息的干扰。
对于企业和个人开发者来说,借助抓信已有的SDK,您可以快速建立一个面向手机用户的移动应用系统,不需要再开发手机APP,也不用花钱申请各种企业资质,从而帮您节省大量的时间和研发费用。
在这个速度决定成败的时代,比竞争对手领先,意味着您将获得更好的市场先机。
初创企业在开拓一项新的互联网业务时,可以借助抓信APP验证自己的产品是否真正满足用户的需求。
好的产品应该是不需要任何推广就能让用户自发传播,您可以把自己的应用集成为抓信插件或快捷菜单,邀请几位种子用户,看看能否产生自发传播的效果。
,如果用户会自发传播,就说明您的产品是在解决用户真正的需求。

网站跟抓信对接的好处

抓信的目标就是为各类网站提供一个公平、开放、去中心化的快速集成框架。
企业ERP/网站跟抓信集成有以下好处:
① 降低研发成本,加快研发进度。抓信为网站提供了现成的手机客户端和后台基础架构模块,企业可以直接使用。
② 不必审核。没有漫长的审核等待周期;随时升级;
③ 平台中立,不用担心被平台封杀。抓信把封杀的权利完全交给了用户。
④ 专注业务,有效避免用户在工作的同时受垃圾信息的干扰。
具有一定软件开发能力的个人开发者,可以基于抓信的社群代码快速开发出一个可正式商用的移动系统。
即将毕业的大学生,可以基于抓信完成自己的毕业论文的软件部分。

抓信二次开发与微信二次开发的不同

① 抓信二次开发专门致力于帮助中小企业或个人开发者节省成本,加快研发速度。举个例子,对于个人开发者,如果要做一个具有交易支付场景的应用,需要自己申请开通微信支付接口和支付宝支付接口,而微信接口和支付宝接口的申请又要求开发者提供座机号码和企业开户行账户,相关审核比较复杂,流程较慢,需要挨个申请对接。
而对于普通个人开发者来说,一般都没有座机号码和企业账户。所以,抓信为了帮开发者节省时间,提供了支付封装接口,开发者只要参考抓信的支付Demo代码,就能快速开发出同时支持支付宝和微信的交易系统。
② 抓信为Java开发者提供了一个实用而又详细的社群项目代码,这个代码完整展示了跟抓信对接的所有技术难点,使开发者不用担心在集成环节出错。
即使是项目经验不太丰富的大学生,也可以基于这个社群代码,快速扩展出一个创新性的手机应用。大大降低了集成的门槛。
③ 微信的定位是社交聊天,抓信的定位是消息助手。如果您希望您的应用消息不被淹没在微信海量的信息当中,可以采用抓信作为展示渠道。

如何与抓信对接

在开始之前,请您先安装抓信APP,安装后,用您自己的手机号注册一个抓信账号,登陆抓信手机客户端,以便于后面测试使用。

注册/管理抓信服务号

首先,打开浏览器,输入抓信服务号管理中心网址: https://www.infbox.com/mp (见下图),
图片
点击“免费注册”,进入企业服务号注册页面,如下图:
图片
按照上图所示,填写公司简称,管理员的手机号和邮箱,密码后,点击“同意以下协议并注册”,就可以完成注册环节了。逐层成功后,直接跳转到服务号管理中心首页,如下图所示:
图片
展开左侧菜单栏,点击”账号管理”,在右侧主面板区域看到一条关于本企业的记录信息:
图片
点击主界面下方的按钮“编辑”,即可进入资料编辑界面,此处设置企业的资料信息,如下图所示:
图片
从账号信息界面中,我们可以看到AppID和AppSecret,这个信息非常重要,下面的系统对接需要这个账号信息。注意,AppID是抓信服务器为企业分配的一个身份标识,不可修改,而AppSecret是对接的密码,将来企业可以随时修改这个密码。
有了AppID和AppSecret后,就可以开始在Eclipse中运行抓信的官方Demo了。步骤如下:
1,根据此链接地址下载tomcat版的Demo项目代码https://github.com/infbox/tomcat-demo
2, 在MySQL中建立数据库,先新建一个空数据库,数据库编码为:utf8mb4. 然后将src/createInMySQL.sql导入到您的MySQL数据库。
3,启动Eclipse, import Existing project,把代码导入开发环境,
4,在WEB-INF/web.xml中修改数据库的连接属性配置,并填写您在抓信服务号后台申请到的appid和appSecret。
相关代码如下所示,请注意第43行,site_url是指Tomcat所在机器的ip地址,开发阶段,为了能在局域网内用手机调试对接效果,此处应填写电脑的局域网ip地址,手机通过WIFI跟开发电脑连接同一个路由器,否则,手机在解析服务器网址的时候会出问题。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<servlet>
<description>initialize DB Connection</description>
<display-name>initDBServlet</display-name>
<servlet-name>InitDBServlet</servlet-name>
<servlet-class>com.infbox.demo.InitWorkServlet</servlet-class>
<init-param>
<param-name>mysql_url</param-name>
<param-value>jdbc:mysql://localhost:3306/test5</param-value>
</init-param>
<init-param>
<param-name>mysql_user</param-name>
<param-value>tom</param-value>
</init-param>
<init-param>
<param-name>mysql_passwd</param-name>
<param-value>secret</param-value>
</init-param>
<load-on-startup>10</load-on-startup>
</servlet>

<!--此处设置您的 抓信服务号appid -->
<servlet>
<servlet-name>InitInfbox</servlet-name>
<servlet-class>com.infbox.sdk.InitWorkServlet</servlet-class>

<init-param>
<param-name>infbox_app_id</param-name>
<param-value>ib9ztUW9klRjbI</param-value>
</init-param>
<init-param>
<param-name>infbox_app_secret</param-name>
<param-value>A267C3CD4BCC69AA1CC229E6718EE3A5</param-value>
</init-param>

<init-param>
<param-name>debug_mode</param-name>
<param-value>true</param-value>
</init-param>

<init-param>
<param-name>site_url</param-name>
<!--value can not end with / -->
<param-value>http://192.168.0.12:8080/cmBuilder</param-value>
</init-param>
<load-on-startup>10</load-on-startup>
</servlet>

4,启动Eclipse里的Tomcat插件

用抓信实现网站扫码登陆

抓信帮您实现了网站扫码登陆的功能。跟抓信集成对接以后,您的网站可以轻松实现扫码登陆。我们以Java版的集成教程的cmBuilder代码为例来演示一下。

用Eclipse导入tomcat-demo项目,打开WebContent->WEB-INF->web.xml文件,设置好infbox_app_id、infbox_app_secret、site_url和mysql_url等数据库相关参数后,启动tomcat,

输入登陆网址:
http://192.168.0.xx:8080/cmBuilder/infbox/login.jsp ,就可以看到扫码登陆的页面如下:
图片
打开抓信手机客户端,点击主界面右上方“+”按钮,点击“扫一扫”,扫描登陆界面里面的二维码,即可登陆进入demo系统的主界面,显示如下:
图片
注意,如果使用了filter,比如spring框架,,那么要在web.xml中给所有的filter加上参数true, 否则可能无法在tomcat里正常运行。
图片
图片
如果APP扫码登录二维码后,浏览器没反应,此时应该查看后台输出信息,如果看到 A filter or servlet of the current chain does not support asynchronous operations 。就说明项目中有的filter不支持异步,可以参考如下链接解决 。http://utopialxw.iteye.com/blog/2117395
如果手机没有用wifi,也无法扫码登录局域网的ip地址。所以,调试的时候要确保电脑跟手机使用同一个WiFi。
抓信手机端支持扫码直接打开一个url链接,如果希望打开url的同时获得用户的身份信息,则需要在url后面附加参数:needId=1&appid=xxxxxx,如果不需要获取用户身份,则应该去掉这个参数

用抓信实现强大的手机客户端消息推送

点击首页上方文字条“点击此处,发送抓信测试消息”,这时候您的抓信手机客户端将会收到测试消息。具体的发送代码在:/cmBuilder/WebContent/sendInfBoxMsg.jsp
图片
如果将来您的业务系统希望给其他用户发送自定义的消息,您可以把接收者、消息标题、内容作为参数传给这个页面,实现消息推送功能。

消息类型

抓信把所有的消息分为三种类型:提醒、请示和任务。不需要回复的消息就叫提醒;需要回复的消息就叫请示; 还有一种消息就是任务。
发送提醒的函数是:InfBoxUtil.sendIBAlert(String receiver_openid, String title, String msg, String actionURL, String alertFollow,Boolean urgent);
receiver_openid: 消息接收者的openid,对应用户表table_user里面的infbox_id字段
title:消息标题
msg:消息内容
actionURL: 消息参考链接地址,如果希望抓信手机端访问该url的时候,能识别用户的身份,那么需要再url后面提供参数:needId=1&appid=xxxxxx,如果不需要获取用户身份,则应该去掉这个参数
alertFollow: 如果填InfBoxUtil.USE_OPEN_ID,则表示给用户推送一个消息,如果是InfBoxUtil.USE_FOLLOW_ID,则表示给关注帖子的用户推送通知。参考addComment.jsp
Urgent:是否需要紧急推送。如果是true,则会在用户手机端立刻弹出提醒。

发送请示的函数是:InfBoxUtil.sendIBConsult(String receiver_openid, String title, String msg, int templateId, String msgId, String actionURL, String token,Boolean urgent);
receiver_openid: 消息接收者的openid,对应用户表table_user里面的infbox_id字段
title:消息标题
msg:消息内容
msgId:保存到本地数据库时的id,发送请示之前,需要先在本地保存请示消息的记录DemoUtil.addInfBoxConsult(title, content, consultTypeId, token);这样用户反馈的时候,就能找到这条记录。具体参考sendInfBoxMsg.jsp里面的示例代码。
templateId:请示模板的编号,下一节介绍
actionURL: 用户点击按钮,处理请示的反馈url地址,具体参考sendInfBoxMsg.jsp里面的示例代码。
Token:保存到本地时随机生成的token,参考sendInfBoxMsg.jsp里面的示例代码
Urgent:是否需要紧急推送。如果是true,则会在用户手机端立刻弹出提醒。
发送任务的函数是:
InfBoxUtil.sendIBTask(String executor_openid, String title, String msg, int task_level, String begin_date, String end_Date, String msgId, String actionURL, String senderOpenId, String token);
executor_openid: 任务执行人的openid,对应用户表table_user里面的infbox_id字段
title:任务标题
msg:任务内容
msgId:保存到本地数据库时的id,发送任务之前,需要先在本地保存任务的记录;这样用户反馈的时候,就能找到这条记录。具体参考sendInfBoxMsg.jsp里面的示例代码。
begin_date:任务的计划开始日期
end_Date: 任务的计划截止日期
actionURL: 用户完成任务后的反馈url地址,具体参考sendInfBoxMsg.jsp里面的示例代码。
senderOpenId:任务监督者的openid,对应用户表table_user里面的infbox_id字段
Token:保存到本地时随机生成的token,参考sendInfBoxMsg.jsp里面的示例代码。具体参考sendInfBoxMsg.jsp里面的示例代码。

请示模板

假设我们发送一个调查问卷的消息,需要用户在“同意”、“不同意”和“不确定”这三者之间做选择。 比如我们的问题是:你同意每周工作6天吗? 那么用户可以在上述3个选项里选一个提交。 假设将来我们的问题换了一个,变成:你同意下个月的工资降低10%吗? 依然需要用户在上述三个选项里面做选择。 可见,这些请示消息除了问题不同外,它们的选择模式是一样的。
为了复用这个选择模式,我们可以在抓信服务器后端,定义一个请示模板,然后在发送消息的时候指定使用这个模板就可以了。
针对上面所述的情况,我们先登陆进入后台管理中心首页,然后点击左侧的菜单“集成配置”->“请示模板管理”
图片
然后点击菜单“集成配置”->“添加请示模板”按钮,就可以添加一个请示模板,填写如下,对接网址可以随便写,在实际使用的过程个,我们在代码里直接复制,会更灵活,然后点击保存:
图片
保存之后,我们可以看到这个请示模板的模板id,记住这个数字,将来我们发送请示消息的时候,那个consultTypeId值就是这个模板id。

使用这个请示模板,我们发送一条测试消息,收到的界面如下左侧所示(右侧为发送的提醒):
图片

抓信手机客户端插件开发

上一节已经实现了给用户实时推送消息。接下来,网站可能会希望用户能快速便捷地访问自己的网站。抓信已经为此提供了完善的插件解决方案,允许网站作为插件集成到抓信里。操作方法如下:
我们登陆抓信服务号管理中心,点击菜单:“集成配置”->“插件管理”,即可添加一个插件:
图片
注意对接的网址,就是我们的demo项目里WebContent/infbox_interface.jsp , 您可以根据自己的业务需求修改页面的响应逻辑。
在服务器端完成配置之后,我们进入抓信手机客户端,先查找企业服务号,把该服务号添加到通讯录。
图片
图片
图片
把网站添加到通讯录后,会自动启用插件。启用之后,返回到主界面,点击中间的插件面板,就可以看到中间插件的首页。

图片
图片
因为我们刚才配置的对接网址是外网地址,所以需要发布到外网才可以用。在本机开发测试的时候,可以填写内网IP地址,但是不能写localhost,这样手机无法连接您的电脑。
抓信规定每个服务号只能有一个插件,不能创建多个插件。插件名称跟服务号名称一致。
插件的首页在第一次显示的时候,如果需要下载很多css/js素材,那么需要让首页能显示一个进度图标,等加载完毕的时候再隐藏图标。
图片
插件的其他页面如果需要返回的,都要提供顶部返回菜单。在实践中发现部分安卓机型不支持a标签的href里面内嵌js代码。所以顶部菜单的返回不要写成

1
<a href=”javascript:history.back();”>
应该写成
1
<a href="javascript:void(0)" onclick=”javascript:history.back();”> 
,否则有的安卓机点击返回没反应。注意不要在标签中出现 href=”#” ,否则安卓会先执行href=”#”刷新页面。

制作抓信手机客户端快捷菜单

抓信手机客户端的“发现”面板里有一个“第三方快捷菜单”,用户可以添加自己需要的第三方菜单到这个列表里,将来直接点击快捷菜单就能用抓信账号登陆第三方系统。
虽然上一节您已经能够为用户提供插件。但有的用户可能不希望启用您提供的插件,但是他又想在需要的时候,直接点击菜单进入您的信息系统,执行一些操作。那您可以把插件的首页制作成一个抓信快捷菜单提供给用户,用户通过扫描二维码,就可以把这个快捷菜单加入到自己的快捷菜单列表里。
具体操作步骤如下:
首先,登陆进入抓信服务号管理中心后台,点击左侧菜单“快捷菜单”->“菜单管理”
图片
然后“菜单模块”->添加菜单,填写快捷菜单的信息(见下页图),注意此处填写的网址,就是点击菜单按钮后要跳转的对接网址,因为此对接页面包含了读取抓信用户信息的处理逻辑。如果您希望提供多个快捷菜单,可以使用同一个网址,但指定不同的stat参数即可:
图片
保存后,就能看到界面上显示了该菜单记录,点击记录右侧的“二维码”,就能显示该菜单的二维码图片,您可用鼠标右键保存该图片,转发给需要的用户。用户用抓信扫描该二维码,就可添加使用该菜单。
图片

用抓信实现扫码关注帖子动态

假设您的网站包含了一个论坛模块。有的用户偶尔会来这个论坛看帖子。有时用户发现了一个有价值的帖子,希望当该帖子有新的回复时,自己能立刻知道,但是自己也不是该帖子的主人。怎么办呢? 抓信为您提供了扫码关注帖子动态的功能。 通过集成抓信,您可以为每一个帖子生成一个扫码关注的二维码图片,只要用抓信扫一下这个二维码,就能及时收到每一个回帖通知。
您运行dem1o之后,扫码登陆进入demo主页,可以看到下面有个帖子列表,您点击一个帖子,进入帖子详情,这样就能看到帖子标题的右侧有个“抓信关注”的菜单。点击该菜单,就会弹出对应的二维码图片。用抓信扫一下,就能实现对该帖子动态的实时关注。
图片
如果将来希望不再接收该帖子的动态信息,可以打开抓信手机客户端,点击“发现”面板,再点击“消息源列表”,从列表中找到对应的帖子,删除该信息源即可。

具体技术细节请参考帖子页面代码:/cmBuilder/WebContent/post.jsp

支付接口

抓信为您提供了支付接口。您可以参考webContent/alipay/saveMoney.jsp代码里面的微信打赏和支付宝打赏功能。
一旦获得了收入,您可以登录抓信服务号管理中心,查看实时的收入记录。

地理位置接口

抓信ios V1.5.5开始,安卓版1.5.1开始,提供了网页用js获得位置信息, 抓信提供了infbox.getLocation()函数,来获取手机定位。在您的网页里必须定义位置回调函数lbsCallback,且回调函数的名字只能叫lbsCallback,不能写成别的,否则抓信无法正确返回 ,比如,以下代码:
1
2
3
4
5
6
7
8
9
<script type="text/javascript">  
var lbsCallback = function(str)
{
$("#news-container").append("<li><a id=\"hahaha\" href=\"a:http://www.baidu.com\" target=\"_self\">我的 位置:"+str+"</a></li>");
}
function onLocationClick(){
infbox.getLocation('');
}
</script>

获取位置的过程最好加一个等待提示。
除了infbox.getLocation()函数,您也可以在网页中使用web版的百度地图,这样也能获得用户的位置信息。具体请参考webContent/mobile/lbs/index.jsp代码。

抓信任务管理系统如何培养高效能习惯

为了帮助用户聚焦于真正重要的事情,抓信的任务管理系统采用了国际公认最高效的时间管理理念。就是把任务的重要等级按照“重要”和“紧急”两个维度排列。鼓励用户多做重要不紧急的事情。(具体理论请参考http://kankan.blog.51cto.com/372369/274701)
抓信sdk提供了发送任务和处理任务反馈的接口函数。
发送任务:请参考/cmBuilder/WebContent/sendInfBoxMsg.jsp 中的InfBoxUtil.sendIBTask函数
处理任务反馈:请参考/cmBuilder/WebContent/replyTask.jsp
图片

其他注意事项

1,抓信浏览器的SDK函数
1, var str=infbox.ping(‘’); //如果str是InfBox,就说明在抓信浏览器里面,否则就不是抓信里
2,微信支付: var vs=infbox.wx_pay(“{\”siteid\”:1006,\”tradeid\”:\”a12356\”}”);
3, infbox.updateWebSite(‘财经社区’); //如果更新了插件或者网站服务号的信息,可以强制让抓信手机端更新信息。但是测试发现,用户还是要重新登录,才能真正看到新的插件url

4,要让一个网页能够获得用户身份,可以在网址后加参数needId=1,然后把网址作为alert推送给用户,但如果不是作为网站推送的消息,则需要再加一个参数是siteid=xxx 或者appid=xxx
例如让网站的homePage是插件主页,则需要写: ib_interface.jsp?needId=1&appid=xxxxxxxxx
5,如果在根据token获取accessToken是{},请检查web.xml,应该是app_id设置错了
6,如何查询订单是否完成支付?
支付订单的状态 state=6 代表付款成功
可以通过订单号查询抓信服务器,看订单的状态
支付宝订单的查询函数为:InfBoxUtil.getAlipayState(“tradeNo”);
微信订单的查询函数为: InfBoxUtil.getWxPayState(“tradeNo”);

返回json结果:
{
“state” : 6,
“pay_time” : “2017-10-21T05:01:03Z”
}

7,消息推送的权限问题:
如果用户没有关注这个网站,则不能给该用户推送消息。如果两个抓信用户不是好友,则不能互相发消息;这对于一般的任务管理系统来说,需要特别注意,此时发的任务,只能把任务消息的发送者和接收者都写成同一个人才行

抓信sdk的jar包依赖okhttp3
1,在html代码里,对于标签里面的链接地址,如果是_blank,则抓信会用新窗口打开页面。但如果这个超链接是javascript动态生成的,则要用getUrl4_Blank(url)转换一下,具体请参考demo代码webContent/mobile/c/index.jsp里面的代码。
因为抓信只是在网页加载的时候判断一下哪个链接需要用新窗口打开,对用动态产生的代码,抓信目前版本还无法判断。抓信计划在2.0版本解决这个问题。