待解决的问题,如下:

  在使用apicloud 的时候我们,在开发用户登录的时候可能会遇到这样的问题,当有2个设备a,b同事使用的app的时候并且是同一个人登录,我们需要去做判断,即大家常说的单点登录。

解决办法:

  这里我们需要有几个重点的事情要去做,比如现在有个用户Q同时拥有2个手机a,b

  •  帐号的时候固定的,唯一变化的是设备,这里我们需要记录一个token或者是设备ID,apicloud的api对象里提供了这2个全局属性,可以获取到,我这边使用设备ID记录(需要注意的时候安卓平台设备id是唯一的,但是ios如果重新安装了app那么会发生改变),把获取到的设备ID保存到数据库用户表中,这样,当登录的设备发生改变时,我们就可以及时通知用户,“您的设备正在被别人登录”(当然,我们还可以通过获取设备的location地址加到提醒上,来个异地提醒什么的)。
  •  那么新问题来了,如果通知用户?一般情况下,如果我们搭建了自己的服务器的话,我们可以自己来实现推送,这里还是主要说没有怎么办(使用apicloud的一般都是个人开发者或者小公司,所有自己搭建服务器还不如使用数据云,花点小钱~~个人观点个人观点),官网提供的模块关于推送模块有许多,但是大多数并不支持自己动态发送推送,想要推送通知或者消息都要到具体的官网上进行推送(要么就是要你冲会员,比如个推),还好的是官网提供了数据云推送API,具体地址可以参考(apicloud推送通知咋整 )    ,参考官网就可以了

主要几个地方需要注意

  • 使用官网的推送功能时需要绑定模块  push
  • apk必须是使用云编辑的正式版
  • 在生成appKey的时候,记得要使用sha1进行编码,贴一下实例如下,还有几个地方大家要知道的,url是固定官网的地址(因为是人家的服务器嘛~),在配合push模块提供的bind()、setListener()函数,我们就可以使用单推并接收了,最终在setListener里编写具体逻辑,提供手机设备a:“你的设备被别人登录拉!!”
// 发送通知
function push() {
var now = Date.now(); var appKey = SHA1("A60926*******" + "UZ" + "*******-*******-*******-*******-*******" + "UZ" + now) + "." + now;
api.ajax({
url: 'https://p.apicloud.com/api/push/message',
method: "post",
headers: {
"X-APICloud-AppId": "A609*******",
"X-APICloud-AppKey": appKey,
"Content-Type": "application/json"
},
dataType: "json",
data: {
"body": {
"title": "消息标题h1234",
"content": "消息内容ll",
"type": 1, //– 消息类型,1:消息 2:通知
"platform": 2, //0:全部平台,1:ios, 2:android
}
}
}, function(ret, err) {
//coding...
alert(JSON.stringify(ret))
alert(JSON.stringify(err))
});
}

apicloud 消息推送与接收的更多相关文章

  1. java消息推送与接收

    package com.zl; import java.net.ServerSocket; import java.net.Socket; import org.apache.commons.mvc. ...

  2. Android 基于Netty的消息推送方案之字符串的接收和发送(三)

    在上一篇文章中<Android 基于Netty的消息推送方案之概念和工作原理(二)> ,我们介绍过一些关于Netty的概念和工作原理的内容,今天我们先来介绍一个叫做ChannelBuffe ...

  3. iOS 之消息推送(个推)---个人小结

    前言:自从上个星期开始整这个推送,弄了差不多一个星期,今天终于给整好了,因此现在来记录这段"奇妙"的旅程. 我们公司使用的消息推送是用的第三方--个推,这里不得不说一下,个推的技术 ...

  4. WebSocket与消息推送

    B/S结构的软件项目中有时客户端需要实时的获得服务器消息,但默认HTTP协议只支持请求响应模式,这样做可以简化Web服务器,减少服务器的负担,加快响应速度,因为服务器不需要与客户端长时间建立一个通信链 ...

  5. 基于ajax与msmq技术的消息推送功能实现

    周末在家捣鼓了一下消息推送的简单例子,其实也没什么技术含量,欢迎大伙拍砖.我设计的这个推送demo是基于ajax长轮询+msmq消息队列来实现的,具体交互过程如下图: 先说说这个ajax长轮询,多长时 ...

  6. C# BS消息推送 SignalR Hubs环境搭建与开发(二)

    1. 前言 本文是根据网上前人的总结得出的. 环境: SignalR2.x,VS2015,Win10 2. 开始开发 1)新建一个MVC项目,叫做SignalRDemo 2)安装SignalR包 In ...

  7. APP的消息推送(极光推送)

    APP的消息推送,使用的第三方平台是极光推送 简单案例(以Thinkphp为例): 1.下载下载PHPSDK 2.把PHPSDK目录下的jpush-api-php-client-3.5.1\src\J ...

  8. node.js Websocket消息推送---GoEasy

    Goeasy, 它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送!个人感觉goeasy推送更稳定,推送 速度快,代码简单易懂上手快 浏览器兼容性:GoEasy推送 支持websocket ...

  9. C(++) Websocket消息推送---GoEasy

    Goeasy, 它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送!个人感觉goeasy推送更稳定,推送 速度快,代码简单易懂上手快 浏览器兼容性:GoEasy推送 支持websocket ...

随机推荐

  1. 如何执行超过一百兆(100MB)的sql脚本?

    最近遇到一个问题,在sqlserver的查询分析器里面执行一个超过100MB的数据库脚本,发现老是报“引发类型为“System.OutOfMemoryException”的异常”,上网查了一下,主要是 ...

  2. html和css入门

    html 单机软件:软件程序和数据都存储在客户端 界面:Tk.PyQt.wxPython库C/S(Client/Server)架构软件:软件程序和数据一部分存在客户端,一部分存在服务器端 界面:Tk. ...

  3. virtualbox硬盘扩容

    https://blog.csdn.net/ouyang_peng/article/details/53261599 1. cmd界面进入virtualbox安装目录:cd C:\Program Fi ...

  4. sublime text3: markdown 安装及常用语法简介

    自己上传到 github 上的 README.rdm 文件内容显示没有“美化”,所有内容都挤在一块儿了,很不舒服. 原因是:github 的文档 README.rdm 文件使用 markdown 编辑 ...

  5. CSS选择器之兄弟选择器(~和+)

    今天在改以以前人家写的网页的样式的时候,碰到这个选择器,‘~’,当时我是懵逼的,傻傻分不清 ‘+’ 跟 ‘~’的区别,虽然我知道他们都是兄弟选择器. 后来网上查了下,也许是我查找的方式不对,没有找到我 ...

  6. centos7 升级GCC版本到7.3.0

    废话不多说,直接上shell,还是比较简单的.就是编译时间有点长... 都是以小时计的......,我刀片机上面一台虚拟机反正是等了3个小时 #必备组件安装 yum install -y gcc gc ...

  7. C++ STL基本容器的使用(vector、list、deque、map、stack、queue)

    1.关联容器和顺序容器 C++中有两种类型的容器:顺序容器和关联容器,顺序容器主要有:vector.list.deque等.关联容器主要有map和set.如下图: 1.vector基本使用 #incl ...

  8. StreamSets学习系列之StreamSets是什么?

    不多说,直接上干货! StreamSets是一个侧重数据集成.数据加工流程构建的平台,也是一个开源的产品.通过StreamSets,用户可以方便的接入不同的数据源,并且完成数据加工流程的构建.Stea ...

  9. Tomcat8源码编译及导入Eclipse中研究

    最近因为需求需要修改Tomcat中的某些功能,无奈只能研究那部分源码然后稍作修改. 目前Tomcat最新版是8.0,下载了源码包,编译并导入Eclipse中研究比较方便. 1. Tomcat8源码编译 ...

  10. MathType试用期到了如何继续用

    1,卸载原来的MathType(不知道需不需要,其实删不删应该无所谓吧) 2,删除注册表中的一个值(不是默认,而是另外一个值) HKEY_CURRENT_USER\Software\Install O ...