本文主要介绍如何在ionic项目中集成极光IM的WebSDK,详细文档可参考官方介绍

一、准备

1. 注册激光账号,进入开发者服务页面创建应用

2. 创建应用后须完成对应平台的推送设置,进行应用或证书绑定。

二、集成

1. 在资源下载页面下载Web SDK,解压缩后将sdk的js文件复制到项目中

2. 在src目录下的index.html中添加引用

3. home.ts

import { Component } from '@angular/core';
import { NavController, AlertController } from 'ionic-angular';
import { Md5 } from 'ts-md5/dist/md5'; declare let JMessage: any; @Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
JIM: any;
constructor(
public navCtrl: NavController,
private alertCtrl: AlertController
) {} ionViewDidLoad() {
let time = new Date().getTime(); // 获取时间戳
let sign = `appkey=7e42e869baa2fbca8ccb823c&timestamp=${time}&random_str=022cd9fd995849b58b3ef0e943421ed9&key=022cd9fd995849b58b3ef0e943421ed9`; // 签名明文
let _signature = Md5.hashStr(sign); // 使用md5加密
// 开始初始化
this.JIM = new JMessage();
this.JIM.init({
appkey: '7e42e869baa2fbca8ccb823c', // 在极光平台注册的 IM 应用 appkey
random_str: '022cd9fd995849b58b3ef0e943421ed9', // 20-36 长度的随机字符串, 作为签名加 salt 使用
signature: _signature, // 签名,10 分钟后失效(只针对初始化操作,初始化成功则之后的操作跟签名无关)
timestamp: time.toString() // 当前时间戳,用于防止重放攻击,精确到毫秒
})
.onSuccess(function(data) {
console.dir(data);
})
.onFail(err => {
console.dir(err);
});
this.JIM.onMsgReceive(data => {
console.dir(data);
});
} login() {
this.JIM.login({
username: 'jim01',
password: 'a19881122a'
}).onSuccess(data => {
this.alertCtrl
.create({
message: '登录成功!'
})
.present();
});
}
}

PS:

签名生成算法如下:

signature = md5(appkey={appkey}&timestamp={timestamp}&random_str={random_str}&key={secret})

其中 secret 为开发者在极光平台注册的 IM 应用 masterSecret。

4. home.html

<ion-header>
<ion-navbar>
<ion-title>
Ionic Blank
</ion-title>
</ion-navbar>
</ion-header> <ion-content padding>
<button block ion-button (click)="login()">登录</button> </ion-content>

另,文中用到的md5加密可参考这篇文章

ionic2中使用极光IM的WebSDK实现即时聊天的更多相关文章

  1. Ionic2系列——在Ionic2中使用ECharts

    在群里看到有人问怎么在Ionic2中集成ECharts来显示图表.当时答应说写个blog,简单写下步骤. 在TypeScript中如果要使用第三方库,必须要有d.ts,也就是定义文件,没有这个文件的话 ...

  2. Ionic项目中使用极光推送

    Ionic项目中使用极光推送-android   对于Ionic项目中使用消息推送服务,Ionic官方提供了ngCordova项目,这个里面的提供了用angularjs封装好的消息推送服务(官方文档) ...

  3. Ionic2系列——在Ionic2中使用高德地图

    之前讲过了如何在Ionic2中使用第三方库,因为第三方库必须针对TypeScript提供相应的声明文件——即d.ts文件,才能被TypeScript正确识别并编译.好在大多数的第三方库已经有了定义文件 ...

  4. Ionic2中集成腾讯Bugly之自定义插件

    Ionic2混合开发,入坑系列:Ionic2中集成腾讯Bugly之自定义插件 1.编写Bugly.js代码 var exec = require('cordova/exec'); module.exp ...

  5. Ionic2中集成第三方控件Sweetalert

    Ionic2混合开发,入坑系列:Ionic2中集成第三方控件Sweetalert 注:Sweetalert2已经可以直接从npm中下载安装 npm install --save sweetalert2 ...

  6. Ionic2中腾讯Bugly异常捕获以及上报

    Ionic2混合开发,入坑系列:Ionic2中腾讯Bugly异常捕获以及上报 1.Ionic2中处理全局异常,直接继承IonicErrorHandler即可,代码如下 import { IonicEr ...

  7. ionic2中使用自定义图标

    在ionic2中使用自定义图标,如iconfont(阿里巴巴矢量图标). 先在http://www.iconfont.cn/ 中找到自己需要的图标,然后将图标加入购物车,然后下载该图标. 下载完成后解 ...

  8. Ionic2中使用第三方插件极光推送

    不同于Ionic1中插件的调用,Ionic2提供了Ionic Native.Ionic Native封装了一些常见的插件(如:Camera.Barcode Scanner等),这些插件的使用方式在官方 ...

  9. 在ionic/cordova中使用极光推送插件(jpush)

    Stpe1:创建一个项目(此处使用的是tab类型的项目,创建方式可参照我前一篇如何离线创建Ionic1项目) Stpe2:修改项目信息 打开[config.xml]修改下图内容:

随机推荐

  1. Sumdiv POJ 1845

    http://poj.org/problem?id=1845 题目 Time Limit: 1000MS   Memory Limit: 30000K Description Consider two ...

  2. Spring MVC 使用介绍(十)—— 编码

    一.概述 客户端与服务器端在交互过程中,需要将字符以某种编码方式转化为字节流进行传输,因此涉及字符的编码和解码.某一方以编码方案A编码,另一方须以同样的编码方案解码,否则会出现乱码. 客户端与服务器端 ...

  3. BBS 502 BadGateway 原因分析

    说明: LNMP架构. crontab里有每隔20分钟重启php的任务:然后我用python写了个每1分钟检测php-cgi进程是否存在的脚本,如果不存在则调用重启php的脚本,并邮件通知管理员.cr ...

  4. Flask 模型操作

    ORM 简称 ORM, O/RM, O/R Mapping 持久化模型 特征 数据表和编程类的映射 数据类型映射 字段属性映射类的属性和数据类型 关系映射 表于表之间的关系对应到 编程类的关系上 优点 ...

  5. 一文读懂ES6(附PY3对比)

      Ⅰ.ES6~POP¶ 代码示例:https://github.com/lotapp/BaseCode/tree/master/javascript/1.ES6 在线演示:https://githu ...

  6. virtual-dom

    virtual-dom的历史 react最早研究virtual-dom,后来react火了之后,大家纷纷研究react的高性能实现,出现了2个流派,一是研究react算法的算法派,(virtual-d ...

  7. 【HDU4751】Divide Groups

    题目大意:给定 N 个点和一些有向边,求是否能够将这个有向图的点分成两个集合,使得同一个集合内的任意两个点都有双向边联通. 题解:反向思考,对于没有双向边的两个点一定不能在同一个集合中.因此,构建一个 ...

  8. bzoj4170 极光

    题目链接 题面 题意 把每个位置的点都看成是一个二维坐标系中的点.比如第\(i\)个点就是\((i,a[i])\). 有两种操作 询问:然后每次询问的就是与当前点坐标的曼哈顿距离小于等于\(k\)的点 ...

  9. Elasticsearch 6.4基本操作 - Java版

    1. Elasticsearch Java API有四类client连接方式 TransportClient RestClient Jest Spring Data Elasticsearch 其中T ...

  10. webapp中绝对定位/固定定位与虚拟键盘冲突的问题

    $('body,html').height(document.body.clientHeight); 进入页面的时候就把高度固定住,这样虚拟键盘打开页面高度不会变化,你的布局也不会乱. 测试有效. 当 ...