web开发python 小米_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))

打印对象返回:

{'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端设置后即可接收

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值