如何在Django创建推送通知?通知、如何在、Django

2023-09-05 10:12:36 作者:氺粿餹ぎ

我想实现在Android的推送通知?

我preFER不使用现有的插件

会有人给我的code为例介绍如何将消息发送

一直在努力,因为一个星期不关我的尝试已经全成

这是我最后一次尝试:

gcm.py

 导入请求
进口JSON


高清send_gcm_message(API_KEY,regs_id,数据,collapse_key =无):
    
    发送GCM消息一个或多个设备,使用JSON数据
    API_KEY:从您的控制台(HTTPS的API_KEY://$c$c.google.com/apis/console,找到关键的服务器应用程序中
        谷歌云消息传递Android版)
    regs_id:一个列表与将要接收消息的设备
    数据:将被发送的字典数据
    collapse_key:将字符串组消息,看看它的文档:
        http://developer.android.com/google/gcm/gcm.html#request
    
    值= {
        registration_ids:regs_id,
        collapse_key:collapse_key,
        '数据':数据
    }

    值= json.dumps(值)

    标题= {
        用户代理:GCM-服务器,
        内容类型:应用/ JSON的,
        '授权':'键='+ API_KEY,
    }

    响应= requests.post(URL =htt​​ps://android.googleapis.com/gcm/send
                             数据=值,
                             头=头)
    回报response.content
 

views.py

 导入设置
从.gcm进口send_gcm_message


@render_to(推/ envoyer_message.html)
高清send_message(要求):
    如果不是request.user.is_authenticated():
        返回的Htt presponseRedirect('/客户机/登录)
    其他:
        如果request.method =='POST':
            表= MessageForm(request.POST)
            如果form.is_valid():
                form.save()

                reg_id='APA91bFSIEHPOeT2I7ddCqnYtnJ-iAEQfCiR3HArUIz0t5lQUVfIOGhlEIUJCJLY7SWEdwiJCHedLNaSFi6oVqbnsci9-HmpBNiZAa86KD3349AIWMesweUqF2YbfpSBRot1tNLCITRFbYH9g5AO514s8Zzs4ABumA'
                味精=测试
                发送= send_gcm_message(API_KEY = settings.GCM_APIKEY,regs_id = [reg_id],数据= {'味精':味精},collapse_key =消息)

                messages.success(请求,_(u'FormulaireenvoyéAVEC更迭。'))
                返回的Htt presponseRedirect(反向(推 - 认可 -  envoi))
        其他:
            表= MessageForm()
        返回当地人()
 
Django web开发 Django 创建工程 启动服务 路由的匹配

编辑:

这是我的错误:

 字段数据必须是一个JSON数组:测试WWW
 

解决方案

解决

  regs_id =名单()
                对于设备devices_a:
                    regs_id.append(device.token_string)


                消息= json.dumps(消息)
                值= {
                    registration_ids:regs_id,
                    collapse_key:消息,
                    数据:{消息:STR(msg.message)}
                }

                标题= {
                    用户代理:GCM-服务器,
                    内容类型:应用/ JSON的,
                    '授权':'键='+ settings.GCM_APIKEY,
                }

                响应= requests.post(URL =htt​​ps://android.googleapis.com/gcm/send,数据= json.dumps(值),头=头)

                R = json.loads(response.content)
                msg.nbr_android_recieved = R [成功]
 

I'd like to implement push notifications in android ?

I prefer not to use an existing plugins

would someone give me an example of code on how to send a message

have been struggling since a week none of my tries have been successfull

This is my last try:

gcm.py

    import requests
import json


def send_gcm_message(api_key, regs_id, data, collapse_key=None):
    """
    Send a GCM message for one or more devices, using json data
    api_key: The API_KEY from your console (https://code.google.com/apis/console, locate Key for Server Apps in
        Google Cloud Messaging for Android)
    regs_id: A list with the devices which will be receiving a message
    data: The dict data which will be send
    collapse_key: A string to group messages, look at the documentation about it:
        http://developer.android.com/google/gcm/gcm.html#request
    """
    values = {
        'registration_ids': regs_id,
        'collapse_key': collapse_key,
        'data': data
    }

    values = json.dumps(values)

    headers = {
        'UserAgent': "GCM-Server",
        'Content-Type': 'application/json',
        'Authorization': 'key=' + api_key,
    }

    response = requests.post(url="https://android.googleapis.com/gcm/send",
                             data=values,
                             headers=headers)
    return response.content

views.py

import settings
from .gcm import send_gcm_message


@render_to("push/envoyer_message.html")
def send_message(request):
    if not request.user.is_authenticated():
        return HttpResponseRedirect('/client/login')
    else:
        if request.method == 'POST':
            form = MessageForm(request.POST)
            if form.is_valid():
                form.save()

                reg_id='APA91bFSIEHPOeT2I7ddCqnYtnJ-iAEQfCiR3HArUIz0t5lQUVfIOGhlEIUJCJLY7SWEdwiJCHedLNaSFi6oVqbnsci9-HmpBNiZAa86KD3349AIWMesweUqF2YbfpSBRot1tNLCITRFbYH9g5AO514s8Zzs4ABumA'
                msg='test'
                send = send_gcm_message(api_key = settings.GCM_APIKEY, regs_id=[reg_id], data={'msg': msg},collapse_key="message")

                messages.success(request, _(u'Formulaire envoyé avec succès.'))
                return HttpResponseRedirect(reverse("push-confirmation-envoi"))
        else:
            form = MessageForm()        
        return locals()

EDIT:

This is the error I get :

 Field "data" must be a JSON array: test www

解决方案

SOLVED

                regs_id = list()
                for device in devices_a :
                    regs_id.append(device.token_string)                    


                message = json.dumps(message)
                values = {
                    'registration_ids': regs_id,
                    'collapse_key': "message" ,
                    'data': {"message":str(msg.message)}
                }   

                headers = {
                    'UserAgent': "GCM-Server",
                    'Content-Type': 'application/json',
                    'Authorization': 'key=' + settings.GCM_APIKEY,
                }

                response = requests.post(url="https://android.googleapis.com/gcm/send",data=json.dumps(values), headers=headers)

                r = json.loads(response.content)
                msg.nbr_android_recieved = r["success"]

 
精彩推荐
图片推荐