Отправка fcm от PYTHON (flask), но не получение на стороне android - PullRequest
1 голос
/ 02 апреля 2020

Вот три разных способа отправки сообщения с данными fcm.

1. С pyfcm

def send_fcm(fcm_tokens, title=None, body=None, data_message=None):
push_service = FCMNotification(api_key=app.config['FCM_KEY'])
try:
    if type(fcm_tokens) is list:
        print(fcm_tokens, data_message)
        result = push_service.notify_multiple_devices(registration_ids=fcm_tokens, data_message=data_message)
        print(result, '++++++++++++++', flush=True)
    else:
        print(fcm_tokens, 'single device', data_message)
        result = push_service.notify_single_device(registration_id=fcm_tokens, data_message=data_message)
        print(result, flush=True)
except errors.InvalidDataError as e:
    print(e, flush=True)

2. С firebase_admin sdk

def send_fcm_with_sdk(tokens, data_message=None):

if type(tokens) is list:
    message = messaging.MulticastMessage(
        data=data_message,
        tokens=tokens, )
    response = messaging.send_multicast(message)
    print('{0} messages were sent successfully'.format(response.success_count), flush=True)
else:
    message = messaging.Message(
        data=data_message,
        token=tokens,
    )
    print(message)
    response = messaging.send(message)
    print('Successfully sent message:', response)

3. С остальными api

def send_fcm_with_rest(tokens, title=None, body=None, image=None, data_message=None):
headers = {
    'Content-Type': 'application/json',
    'Authorization': 'key=xxxxxxxKEY',
    'Content-Type': 'application/json'
}
url = 'https://fcm.googleapis.com/fcm/send'
if type(tokens) is list:
    payload = {
        "registration_ids": tokens,
        "collapse_key": "type_a",
        "data": data_message

    }
else:
    payload = {
        "to": tokens,
        "collapse_key": "type_a",
        "data": data_message
    }
print(json.dumps(payload))
resp = requests.post(url, headers=headers, data=json.dumps(payload))

print(resp.text.encode('utf8'), flush=True)
return resp

Странно, но все три из них работают правильно и показывают сообщение об успешном завершении, с success_id, но ни один из fcm не получен на стороне android.

Я попытался отправить из POSTMAN, и от почтальона fcm получены на стороне andriod. Может кто-нибудь, пожалуйста, скажите мне, в чем проблема в моем коде.

...