1. 小米文档及SDK下载

1.文档介绍
https://dev.mi.com/console/doc/detail?pId=863
sdk说明:
2.开发者需要登录开发者网站(申请AppID, AppKey, AppSecret)。
3.访问开发者网站下载SDK。
地址:http://admin.xmpush.xiaomi.com/zh_CN/mipush/downpage
4. 创建应用
http://admin.xmpush.xiaomi.com/zh_CN/app/nav

2.业务场景

小程序端在访问app端分享的商品后,app接收消息,某用户访问了某商品

3. 推送demo在实际项目中应用

3.1 判断设备表消息,调对应的(ios,android)方法

from django.conf import settings as project_settings
# 引入sdk
# -----------------------------
from xmpush.base.APIConstants import *
from xmpush import APISender
from xmpush.base.APIMessage import *
#------------------------------ from common.core.http.response import JSONResponse
from push.models import PushDevice
from account.models import OAuthUser
from push import settings
import copy class PushService(object):
@staticmethod
def push_to_user(user_id, message):
u"""
推送消息给指定的用户的设备
:param user_id: app端用户id
:param message: 要推送给app端的消息
:return:
""" record = PushDevice.objects.filter(user_id=user_id, app_name=settings.AppNameEnum.QQC).order_by('-modify_time').first()
if not record:
error = copy.deepcopy(qqc.ERROR["NOT_EXIST_ERR"])
error["msg"] = u"用户设备信息不存在"
return JSONResponse(error=error) os_type = record.os_type
# 别名推送
alias_id = u'QQC_%s' % user_id
ret = None
# 如果设备是ios
if os_type == settings.DeviceOSEnum.iOS:
ret = push_to_ios_user(alias_id, message) # 如果是Android
elif os_type == settings.DeviceOSEnum.Android:
ret = push_to_android_user(alias_id, message) return ret

3.2 不同系统对应的推送demo

# android 系统
def push_to_android_user(alias_id, msg):
"""
:param alias_id:
:type alias_id str
:param msg:
:type msg AppPushMessage
:return:
""" # android 不支持测试环境
Constants.use_official() message = PushMessage() \
# 创建应用时的包名
.restricted_package_name("") \
.title(msg[0]).description(msg[1]) \
.pass_through(0).payload('') # 通过extra中数据,app端扩展额外的判断
message.extra(msg[2]) # android key and secret
sender = APISender("") recv = sender.send_to_alias(message.message_dict(), alias_id)
return recv # ios系统
def push_to_ios_user(alias_id, msg):
"""
:param alias_id:
:type alias_id str
:param msg:
:type msg AppPushMessage
:return:
""" # 环境判断
if project_settings.QQC_PUSH_MODE == 'production':
Constants.use_official()
else:
Constants.use_sandbox()
message = PushMessage() \
.description(msg[1]) \ # 创建应用时的bundle_id
.restricted_package_name("") \
.badge(1) # 通过extra中数据,app端扩展额外的判断
message.extra(msg[2]) # ios key and secret
sender = APISender("")
return sender.send_to_alias(message.message_dict_ios(), alias_id) demo地址(里面有详细说明):
https://dev.mi.com/console/doc/detail?pId=1788

3.3 拼接要推送的消息

# 访问商品时推送的消息
def goods_visit_message(user_id,name):
"""
:param user_id: 用户id
:param name: 商品名
:return: title, description
"""
user = OAuthUser.objects.filter(user_id=user_id).first()
user_name = user.nickname
title = u'您有一条新消息~'
description = u'【%s】刚刚浏览了您的商品【%s】~' % (user_name, name) # 自己可定义type的用途
type = {"type": 2}
return title, description, type

3.4 在项目的其他接口中调用推送方法

PushService.push_to_user(app_user_id, goods_visit_message(wx_user_id,goods_name))

打印对象返回:
{'info': u'Received push messages for 1 ALIAS',
'code': 0,
'description': u'\u6210\u529f',
'trace_id': u'Xdm03290562213241158in',
'result': u'ok',
'data': {'id': u'adm03290562213241161sM'}} 如上格式,消息已推送到小米服务器,app端设置后即可接收

  • 更多推送姿势,有待在更多的业务场景中解锁!!!

python - 小米推送使用的更多相关文章

  1. XiaomiPushDemo【小米推送集成,基于V3.6.12版本】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 这个Demo只是记录小米推送的集成,不能运行. 使用步骤 一.项目组织结构图 注意事项: 1.  导入类文件后需要change包名以 ...

  2. iOS 小米推送总结和遇到的坑

    极光推送就不赘述了,这里说下小米推送在ios上的坑吧,查了好久也没有查到相关的文章. 极光的强大就不说了,当客户贪图实惠的时候,当人家给你让你用小米推送的时候,我的内心是崩溃的,小米推送???没听过! ...

  3. 小米推送 简介 集成 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  4. idea + springboot 的java后台服务器通过小米推送

    public class XiaomiPush { // 1.小米推送(我只推送Android且只应用regId发起推送,所以下面只有推送Android的代码 private static final ...

  5. python 微信推送模板消息

    #!/usr/bin/env python #-*- coding: utf-8 -*- import httplib import json import MySQLdb #从数据库中获取acces ...

  6. Android 推送集成华为,小米,友盟

    公司的 app 一直使用的是极光推送,最近反馈比较多的是推送消息收不到,看来需要找新的推送服务了,在国内目前手机品牌占有率比较多的是华为和小米,且这两家都有自己的推送服务,同时一个合作的友商说他们使用 ...

  7. android极光推送

    版权声明:本文为博主原创文章,未经博主允许不得转载. Android开发记录18-集成推送服务的一点说明 关于推送服务,国内有很多选择,笔者也对它们进行了一个详细的对比,一般我们产品选择推送服务主要考 ...

  8. 使用极光/友盟推送,APP进程杀死后为什么收不到推送(转)

    为什么会存在这样的 问题,刚开始的时候我也搞不清楚,之前用极光的时候杀死程序后也会收到推送,但最近重新再去集成时就完全不好使了,这我就纳闷了,虽然Google在高版本上的android上面不建议线程守 ...

  9. android app 集成 信鸽推送

    推送其实挺中意小米推送的,并经用户群占比还是比较大的,奈何拗不过php后端哥们的选型,就只好用信鸽推送了,期间接入过程中也是遇到不少问题,所以记录下来,以后如果还是用信鸽推送的话,估计看看以前的博客, ...

随机推荐

  1. 【VisualStdio】在VS2015中显示上下文菜单中“创建单元测试”菜单

    ---恢复内容开始--- VS2012以后创建单元测试的选项被默认隐藏了,创建单元测试变得无比低效率.看msdn的说法好像是想推荐使用Intell Test来替代单元测试的用途,但是还没摸清楚也不敢瞎 ...

  2. git 多个远程仓库

    有时候一个git项目需要使用多个远程库,如:测试环境+生产环境,国内加国外等 项目根目录下修改 .git/config 文件 vim .git/config 新增远程一个远程仓库   并为其命名 :如 ...

  3. 深度学习大规模MIMO中的功率分配

    摘要-本文使用深度学习的方法在大规模MIMO网络的下行链路中执行max-min和max-prod功率分配.更确切地说,与传统的面向优化的方法相比,训练深度神经网络来学习用户设备(UE)的位置和最优功率 ...

  4. 控制 if 语句 while循环 break continue

    if 语句的语法: 1. if 条件 :   #引号是将条件与结果分开 代码块   # 四个空格,或者一个tab键,这个是告诉程序满足这个条件的 说明: 当条件成立的时候(True), 代码块会被执行 ...

  5. hibernate 参数一览

    实现包含了Hibernate与数据库的基本连接信息的配置方式有两种方式: 第一种是使用hibernate.properties文件作为配置文件. 第二种是使用hibernate.cfg.xml文件作为 ...

  6. Redis 设置权限密码,以及如何开启关闭设置

    linux redis 设置密码:   在服务器上,这里以linux服务器为例,为redis配置密码. 1.第一种方式 (当前这种linux配置redis密码的方法是一种临时的,如果redis重启之后 ...

  7. Sass-属性嵌套

    Sass 中还提供属性嵌套,CSS 有一些属性前缀相同,只是后缀不一样,比如:border-top/border-right,与这个类似的还有 margin.padding.font 等属性.假设你的 ...

  8. 力扣 — Rotate List()

    题目描述: 中文: 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数. 示例 1: 输入: 1->2->3->4->5->NULL, k = ...

  9. OpenCV常用基本处理函数(3)颜色空间

    颜色空间转换 对图像进行颜色空间转换,比如从 BGR 到灰度图,或者从BGR 到 HSV 等 我们要用到的函数是:cv2.cvtColor(input_image ,flag),其中 flag就是转换 ...

  10. 1.Configuration

    1.Configuration(public sealed class Configuration) 定义:表示适用于特定计算机.应用程序或资源的配置文件. 此类不能被继承 获取实例: Configu ...