titanium-聊天module的使用

发表于:,更新于:,By Sally
大纲
  1. 1. 聊天module
  2. 2. 引用module注意事项
  3. 3. 开始,项目准备
    1. 3.1. 创建自己的应用
    2. 3.2. 应用创建好之后,首先需要获得easemob的对象。
  4. 4. 接着,就是根据自己项目的需求,完善相应的功能
    1. 4.1. 一切准备就绪,就需要参照环信api来完成相应功能
  5. 5. 最后,业务的处理,便真离不开api了

聊天module

  • 在titanium中使用环信sdk实现聊天,这里有一个封装好的module。

  • 作者:明星

  • module

  • demo

引用module注意事项

  • 在demo中,有一个platform/文件夹,里面放了些乱七八糟的东西,这个文件夹,一定要拷贝到自己的项目中,否则会出现未捕获得异常的异常(异常名字忘了)

  • 记得在tiapp.xml中添加要引用的标签

  • 还有android module 中的appkey也要修改一下

开始,项目准备

创建自己的应用

  • 环信中创建

  • 这时会获得一个AppKey、Client id、Client Secret.这三个东西后面需要常用。

  • 如果在ios中,也要接入的话,那就需要上传ios推送证书。证书的名称后面也需要用到。

应用创建好之后,首先需要获得easemob的对象。

  • 该对象要求在整个application中只有一份(单例),所以最好在app.js中初始化。

  • 紧接着,就用到了appkey 和ios证书名称,这个很重要。

1
2
var EaseMob = require("com.mamashai.easemob");
EaseMob.config("你的appkey", "你的ios证书名称");
  • 小说明:当你在接入该sdk时,聊天的好友之间可能是同一个应用的用户,也可能不是同一个应用的用户(比如:假设买家和卖家各自有自己的客户端,但是它们之间有共享的数据,也需要进行聊天)。这时,只要保证appkey 和ios证书统一即可。

接着,就是根据自己项目的需求,完善相应的功能

一切准备就绪,就需要参照环信api来完成相应功能

  • 在使用api的时候,大多数的方法都需要token值,所以先来获取一下token值。 ps:这里需要client_id 和client_secret

  • 获得token的方法

1
curl -X POST "https://a1.easemob.com/appkey#前半部分/appkey#后半部分/token" -d '{"grant_type":"client_credentials","client_id":"你的client_id","client_secret":"你的client_secret"}'
  • 但是,token是有时间限制的,默认为一周,所以我们需要在后台运行一个进程,专门来获得token值,以确保token一直可用。(当然你也可以使用别的方法,如:每次需要的时候先判断token是否可用,不可用便获取并存储;可用便拿来用)

  • 后台运行脚本代码,需要写在/scripts/文件夹下

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
# -*- encoding : utf-8 -*-
ENV[RAILS_ENV'] = ARGV.first || ENV['RAILS_ENV'] || 'production'
require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
require 'rufus/scheduler'
require 'rails'
require 'rubygems'
scheduler = Rufus::Scheduler.new

# 获得环信token值
scheduler.every '604800s' do
result = `curl -X POST "https://a1.easemob.com/uubpay/householderapp/token" -d '{"grant_type":"client_credentials","client_id":"YXA6Ws4LcLNwEeWB6IHPKULccg","client_secret":"YXA6d4
result = JSON.parse(result)
puts '=============== token ===================='
puts result
token = result['access_token']
expires = result['expires_in']
application = result['application']
puts "======
=#{token} ==== #{expires} ==== #{application}"

unless EasemobToken.all.present?
@easemob = EasemobToken.new(:token => token, :expires_in => expires, :application => application)
@easemob.save!
else
EasemobToken.first.update(:token => token)
end
end

scheduler.join
  • 该文件使用到了scheduler这个gem,关于该gem的用法,看这里

最后,业务的处理,便真离不开api了

  • api中比较好用的执行请求方法还是 curl (CommandLine Uniform Resource Locator)

  • 但是得注意他的参数官网 参数信息

  • 以下是关于curl参数的介绍

1
2
3
4
5
6
-x/--proxy <host[:port]>在给定的端口上使用HTTP代理
-X/--request <command>指定什么命令
-H/--header <line>自定义头信息传递给服务器
--ignore-content-length 忽略的HTTP头信息的长度
-i/--include 输出时包括protocol头信息
-I/--head 只显示文档信息

  • 下载单个文件,默认将输出打印到标准输出中
1
curl http://www.baidu.com
  • -o 将文件保存为命令行中追定的文件名的文件中 -O 使用url中默认的文件名保存文件到本地
1
2
curl -o mytext.html http://www.baidu.com/a.html
curl -O http://www.baidu.com/a.html
  • 同时获取多个文件
1
curl -O url1 -O url2
  • -L 重定向

  • -C 断点续传

  • –limit-rate 对curl使用网络限速

  • -u 在访问页面时,可以提供用户名和密码进行授权

1
2
3
curl -u username:password url
// 通常的做法是:只输入用户名,等待提示再输入密码
curl -u username url
  • -v 和 -trace 获取更多的链接信息

  • 保存和使用网站cookie信息

1
2
3
4
5
# 将网站的cookies信息保存到mytext文件中
curl -D mytext http://www.baidu.com

# 使用上次保存的cookie信息
curl -b mytext http://www.baidu.com
  • 传递数据请求
1
2
3
4
5
6
7
8
# get
curl -u username https://api.github.com/user?access_token=XXXXXXXXXX

# post
curl -u username --data "param1=value1&param2=value" https://api.github.comjjjjjjjkjo

# 也可以指定一个文件,将该文件中的内容当作数据传递给服务器端
curl --data @filename https://github.api.com/authorizations