ionic中极光推送的集成

1.到极光官网注册账号,新建应用获得appkey。
详见:https://www.jiguang.cn/app/list
2.引入jpush插件
详见:https://github.com/jpush/jpush-phonegap-plugin
通过 Cordova Plugins 安装,要求 Cordova CLI 5.0+:
cordova plugin add jpush-phonegap-plugin --variable API_KEY=xxxxxx通过 url 安装:
cordova plugin add https://github.com/jpush/jpush-phonegap-plugin.git --variable API_KEY=xxxxxx下载到本地安装:
cordova plugin add [localPath] --variable API_KEY=xxxxxx
注意:安装的时候记得带上极光推送新建应用的appkey
先介绍一下jpush的几个常用的事件:
- jpush.setTagsWithAlias:设置别名和标签时触发
- jpush.openNotification:打开推送时触发
- jpush.receiveNotification:接收到通知时触发
- jpush.receiveMessage:接收到消息时触发
3:controllers逻辑代码。
controllers.js
controller('RemoteNotificationCtrl', function ($scope,
$rootScope) {
$scope.message = "on load view success!";
// 当设备就绪时
var onDeviceReady = function () {
$scope.message += "JPushPlugin:Device ready!";
initiateUI();
};
// 设置标签和别名
var onTagsWithAlias = function (event) {
try {
$scope.message += "onTagsWithAlias";
var result = "result code:" + event.resultCode + " ";
result += "tags:" + event.tags + " ";
result += "alias:" + event.alias + " ";
$scope.message += result
$scope.tagAliasResult = result;
} catch (exception) {
console.log(exception)
}
};
// 打开通知的回调函数
var onOpenNotification = function (event) {
try {
var alertContent;
if (device.platform == "Android") {
alertContent = window.plugins.jPushPlugin.openNotification.alert;
} else {
alertContent = event.aps.alert;
}
$scope.message += alertContent;
alert("onOpenNotification:" + alertContent);
} catch (exception) {
console.log("JPushPlugin:onOpenNotification" + exception);
}
};
// 接收到通知时的回调函数
var onReceiveNotification = function (event) {
try {
var alertContent;
if (device.platform == "Android") {
alertContent = window.plugins.jPushPlugin.receiveNotification.alert;
} else {
alertContent = event.aps.alert;
}
$scope.message += alertContent;
$scope.notificationResult = alertContent;
} catch (exception) {
console.log(exception)
}
};
// 接收到消息时的回调函数
var onReceiveMessage = function (event) {
try {
var message;
if (device.platform == "Android") {
message = window.plugins.jPushPlugin.receiveMessage.message;
} else {
message = event.content;
}
$scope.message += message;
$scope.messageResult = message;
} catch (exception) {
console.log("JPushPlugin:onReceiveMessage-->" + exception);
}
};
// 获取RegistrationID
var getRegistrationID = function () {
window.plugins.jPushPlugin.getRegistrationID(function (data) {
try {
console.log("JPushPlugin:registrationID is " + data);
if (data.length == 0) {
var t1 = window.setTimeout(getRegistrationID, 1000);
}
$scope.message += "JPushPlugin:registrationID is " + data;
$scope.registrationID = data;
} catch (exception) {
console.log(exception);
}
});
};
//初始化jpush
var initiateUI = function () {
try {
window.plugins.jPushPlugin.init();
getRegistrationID();
if (device.platform != "Android") {
window.plugins.jPushPlugin.setDebugModeFromIos();
window.plugins.jPushPlugin.setApplicationIconBadgeNumber(0);
} else {
window.plugins.jPushPlugin.setDebugMode(true);
window.plugins.jPushPlugin.setStatisticsOpen(true);
}
$scope.message += '初始化成功! \r\n';
} catch (exception) {
console.log(exception);
}
}
$scope.formData = {}
// 设置别名和标签
$scope.setTagsAndAlias = function () {
try {
$scope.message += "准备设置tag/alias...";
var tags = [];
if ($scope.formData.tag1 != "") {
tags.push($scope.formData.tag1);
}
if ($scope.formData.tag2 != "") {
tags.push($scope.formData.tag2);
}
window.plugins.jPushPlugin.setTagsWithAlias(tags, $scope.formData.alias);
$scope.message += '设置tags和alias成功! \r\n';
} catch (exception) {
console.log(exception);
}
}
// 添加对回调函数的监听
document.addEventListener("jpush.setTagsWithAlias", onTagsWithAlias, false);
document.addEventListener("deviceready", onDeviceReady, false);
document.addEventListener("jpush.openNotification", onOpenNotification, false);
document.addEventListener("jpush.receiveNotification", onReceiveNotification, false);
document.addEventListener("jpush.receiveMessage", onReceiveMessage, false);
})
remoteNotification.html
<ion-view title="Notification">
<ion-content>
<div class="row">
<div class="col">
RegistrationID:{{registrationID}}
</div>
</div>
<div class="row">
<div class="col">
Tags:
</div>
</div>
<div class="row">
<div class="col">
<label class="item item-input">
<input type="text" placeholder="tag1" placeholder="formData.tag1">
</label>
</div>
</div>
<div class="row">
<div class="col">
<label class="item item-input">
<input type="text" placeholder="tag2" placeholder="formData.tag1">
</label>
</div>
</div>
<div class="row">
<div class="col">
Alias:
<label class="item item-input">
<input type="text" placeholder="Alias" ng-model="formData.alias">
</label>
</div>
</div>
<div class="row">
<div class="col">
<button class="button button-positive" ng-click="setTagsAndAlias()">add tags and alias</button>
</div>
</div>
<div class="row">
<div class="col">
设置tag/alias结果:{{tagAliasResult}} <br> 接受的通知内容:{{notificationResult}} <br> 接受的自定义消息:{{messageResult}}
<br>
</div>
</div>
<div class="row">
<p>{{message}}</p>
</div>
</ion-content>
</ion-view>
效果
设置别名和标签可实现批量设备推送,比如这里我设置了别名为tonge,那么这条推送消息就只有我这台设备可以收得到,下面是效果图
【1】【2】【3】
技巧分享
通常在开发调试阶段,特别是真机调试时,往往不知道代码运行到哪一行报错,这里有个小技巧,可看到controller和view中我设了个message的变量,来监测代码运行的步骤。有的同学就要说了,用alert岂不是更方便,alert确实可行,但如果在发布上线后你忘记注释掉alert,用户在使用时突然弹出一段json数据,自己脑补用户一脸大写懵逼的表情。不要问我怎么知道的,我是不会告诉你曾经我在做大型web项目开发时,使用ajax请求数据都alert了一遍 ,最后就出现了这样的情景。
ionic中极光推送的集成的更多相关文章
- (转载)iOS 极光推送SDK 集成指南
iOS SDK 集成指南 使用提示 本文匹配的 SDK版本:r1.2.5 以后. 查看最近更新了解最新的SDK更新情况. 产品功能说明 极光推送(JPush)是一个端到端的推送服务,使得服务器端消息能 ...
- Ionic JPush极光推送 插件实例
1.需要去这里注册https://www.jiguang.cn 注册成功获取AppKey 备注填写应用包名规范点,在项目还要用那 2.创建ionic 项目 指定你注册时候的包名(假如:com.ioni ...
- 68-Flutter中极光推送的使用
1.申请极光账号和建立应用 极光推送的官方网址为:https://www.jiguang.cn/ 注册好后,进入'服务中心',然后再进入'开发者平台',点击创建应用. 这时候会出现新页面,让你填写“应 ...
- Flutter中极光推送的使用----jpush_flutter
原文地址:https://www.cnblogs.com/niceyoo/p/11095994.html 1.申请极光账号和建立应用 极光推送的官方网址为:https://www.jiguang.cn ...
- iOS 极光推送的集成以及一些集成后的狗血
1.首先进入极光文档下载激光推送的SDk---传送门http://docs.jiguang.cn/jpush/client/iOS/ios_sdk/ 将解压后的lib子文件夹(包含JPUSHSer ...
- Ionic JPush极光推送二
1.看图解决问题 2.解决出现统计代码提示问题 修改这个java 文件 导入命名空间 import cn.jpush.android.api.JPushInterface; 添加方法 @Overr ...
- ios极光推送快速集成教程
内容中包含 base64string 图片造成字符过多,拒绝显示
- C#关于HttpClient的应用(二):极光推送IM集成
public class JPushClient:BaseHttpClient { private String appKey; private String masterSecret; public ...
- JPushDemo【极光推送集成,基于v3.1.8版本】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 这个Demo只是记录极光推送的集成,不能运行. 使用步骤 一.项目组织结构图 注意事项: 1. 导入类文件后需要change包名以 ...
随机推荐
- linux shell的输出效果修改方法(界面颜色)
文本终端的颜色可以使用“ANSI非常规字符序列”来生成.举例: echo -e "\033[44;37;5m ME \033[0m COOL" 以上命令设置背景成为蓝色,前景白色, ...
- 无法激活服务,因为它不支持 ASP.NET 兼容性
wcf错误直接上图: 原因: 一般是因为程序添加了启用了AJAX的WCF服务而缺少相关设置出现的错误. 解决方案: 1.webconfig <system.serviceModel> &l ...
- PHP开发入行真功夫 三扬科技
前言与目录 PHP开发入行真功夫 前言 PHP开发入行真功夫 目录 第2章 基本语法 2.1.1 判断闰年程序 2.1.2 我们现在能做的…… 2.2.1 PHP的语言概貌 2.2.2 为我们的程 ...
- listview优化 汇总
1,listview加载性能优化ViewHolder 转自: http://blog.csdn.net/jacman/article/details/7087995 在android开发中Listvi ...
- 【poj2478-Farey Sequence】递推求欧拉函数-欧拉函数的几个性质和推论
http://poj.org/problem?id=2478 题意:给定一个数x,求<=x的数的欧拉函数值的和.(x<=10^6) 题解:数据范围比较大,像poj1248一样的做法是不可行 ...
- 凌乱的yyy
题目背景 快noip了,yyy很紧张! 题目描述 现在各大oj上有n个比赛,每个比赛的开始.结束的时间点是知道的. yyy认为,参加越多的比赛,noip就能考的越好(假的) 所以,他想知道他最多能参加 ...
- three.js 简介
What is Three.js? Let's try to describe it briefly: Three.js is a library that makes WebGL - 3D in t ...
- IE9 JSON未定义
原文:http://social.msdn.microsoft.com/Forums/ie/en-US/fc41127c-0243-4d2e-8e7c-2b311f12e390/ie9-json-no ...
- CentOS系统安装tomcat
按照以下步骤操作即可wget http://mirrors.noc.im/apache/tomcat/tomcat-9/v9.0.0.M6/bin/apache-tomcat-9.0.0.M6.tar ...
- Java-马士兵设计模式学习笔记-观察者模式-OOD 线程 改进
1.概述 由于上一个文章<Java OOD 线程>中的线程是父类主动监听childe,比较耗资源,现改进为childe类醒来后主动联系父类 2.代码 Test.java class Chi ...