python - 小米推送使用

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))

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

原文地址:https://www.cnblogs.com/quqinchao/p/11229172.html

时间: 2024-10-10 04:14:46

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

Android消息推送:手把手教你集成小米推送

前言 在Android开发中,消息推送功能的使用非常常见. 为了降低开发成本,使用第三方推送是现今较为流行的解决方案. 今天,我将手把手教大家如何在你的应用里集成小米推送 该文档基于小米推送官方Demo,并给出简易推送Demo 看该文档前,请先阅读我写的另外两篇文章: 史上最全解析Android消息推送解决方案 Android推送:第三方消息推送平台详细解析 目录 1. 官方Demo解析 首先,我们先对小米官方的推送Demo进行解析. 请先到官网下载官方Demo和SDK说明文档 1.1 Demo

Android端小米推送Demo解析和实现方法

前言 最近这几个月都是在准备找工作和找工作中,付出了很多,总算是有点收获,所以都没有怎么整理笔记.到了最近才有空把自己的笔记整理一下发上来,分享一下我的学习经验. 推送 由于最近项目要用到Android的消息推送,关于Android推送的解决方案有很多种,有C2DM,轮询, SMS,MQTT协议,XMPP协议和第三方平台,经过我们对项目需求的考虑之后我们选择了第三方平台推送的小米推送,下面就是小米推送的实现方法. 实现准备 想要用小米推送首先要去小米开发者平台注册申请开发者账号,经过1到3天的审

我只想做好一件白衬衫 -- 小米推送服务监控手记

最近读陈年先生的文章"凑热闹的公司都会烟消云散",读了十几遍,意犹未尽,感慨颇深. 我来小米三年了,三年前我会滔滔不绝的跟别人讲,如何带领几十个人,建立一套多么完善的质量保证体系,如何用制度让所有人都遵守软件开发的流程和秩序,等等云云:还要告诉大家,某某大公司都是这样干的,某某外企比这个干的还大,借以佐证我的思想是何等的正确和伟大. 现在想想,那时的我,SB! 2014年,我很平静的度过了,做了一年多的推送服务,写年终总结的时候,恰逢读到陈年先生的那篇文章,于是我想我一年做了这么多事情

调用小米推送api时报证书签名无效

Feb 20, 2017 4:10:07 PM com.xiaomi.xmpush.server.Sender sendMessageWARNING: IOException posting to XmPushjavax.net.ssl.SSLException: Server key at sun.security.ssl.Handshaker.throwSSLException(Handshaker.java:1274) at sun.security.ssl.ClientHandshake

小米海量数据推送服务技术的功能实现讲解

小米海量数据推送服务技术的功能实现讲解 11.11大促之后,随着移动端业务量的急剧提升,像小米推送这样的基础服务也经受了巨大的考验.11月12日,小米的项目总监汪轩然在微博上宣布,"小米推送服务共发出9.65亿条消息,平均每分钟发送67万条.更值得一提的是,后台监控显示,推送服务后台系统在全天运作非常平稳,没有任何卡顿拥堵现象,让各种促销.返利.订单更新消息第一时间触达用户." 汪轩然,2007年毕业于清华大学计算机系,后加入微软亚洲工程院,曾参与WP7上的浏览器的开发.2010年7月

从推送看小米的野心

推送是服务端主动给手机端发送消息,现在基本上每个商业级别的应用都会用到推送.苹果在推送这方面算是做得最棒的,所有的推送都通过苹果服务器,从而让手机端变得更加省电.小米推送也跟苹果类似,所有推送都会通过小米来推送,而且即使app退出,也可以收到推送. 从技术上来讲,推送固然可以采用开源的OpenFire+Asmack,当然也可以在服务中开启Socket链接来实现.但现实远非想想的那么顺利. 就拿miui来说,miui从底层对app自动重启做了优化,只要应用被一键清理后,就再也不会偷偷的自动重启了,

android极光推送

版权声明:本文为博主原创文章,未经博主允许不得转载. Android开发记录18-集成推送服务的一点说明 关于推送服务,国内有很多选择,笔者也对它们进行了一个详细的对比,一般我们产品选择推送服务主要考量以下几个要素: 1.是否收费,如何收费? 2.推送内容是是什么(是否包含通知.消息.富媒体等等) 3.稳定性.及时性如何? 4.集成难度是否简单 5.支持平台有哪些(主流Android.IOS) 6.服务端支持语言(Java.C#.PHP.Python等) 下面笔者例举国内主要的一些推送服务: 来

Android开发记录18-集成极光推送的一点说明

Android开发记录18-集成推送服务的一点说明 关于推送服务,国内有很多选择,笔者也对它们进行了一个详细的对比,一般我们产品选择推送服务主要考量以下几个要素: 1.是否收费,如何收费? 2.推送内容是是什么(是否包含通知.消息.富媒体等等) 3.稳定性.及时性如何? 4.集成难度是否简单 5.支持平台有哪些(主流Android.IOS) 6.服务端支持语言(Java.C#.PHP.Python等) 下面笔者例举国内主要的一些推送服务: 来自Devstore的统计,共收录了国内21家推送服务,

MIUI(ADUI)关闭广告推送步骤方法

MIUI自从到了版本MIUI8之后,系统增加了各种推送,让人们所诟病.很多消费者因为这个原因,不再考虑小米手机,尽管小米手机确实很便宜. 下面就说一下如何关闭所有的MIUI 8的广告推送.方法源自MIUI官方论坛. 1.应用商店.我的->设置->接收推送通知 2.浏览器.右下角三条横杠->设置->消息通知管理->接收通知栏消息 3.音乐.我的->设置->更多高级设置->资讯广告推荐 4.下载管理.右上角三个点->设置->信息流设置->资源推