Files
ibapp-backend/core/apps/notifications/utils/send_notification.py
behruz-dev 686c4eee8b fix
2025-10-30 15:24:33 +05:00

53 lines
1.4 KiB
Python

import requests
from firebase_admin import messaging
from django.conf import settings
from core.apps.notifications.models import Notification
EXPO_API_URL = "https://exp.host/--/api/v2/push/send"
def send_notification(token, title, body, data=None):
tokens = list(Notification.objects.exclude(token=token).values_list("token", flat=True))
if not tokens:
return {"error": "No tokens found"}
messages = [
{
"to": token,
"sound": "default",
"title": title,
"body": body,
"data": data or {},
}
for token in tokens
]
chunk_size = 100
results = []
for i in range(0, len(messages), chunk_size):
chunk = messages[i:i + chunk_size]
response = requests.post(EXPO_API_URL, json=chunk, headers={"Content-Type": "application/json"})
try:
results.append(response.json())
except Exception:
results.append({"error": "Invalid JSON response"})
return results
def send_web_notification(token, title, body, data=None):
tokens = list(Notification.objects.exclude(token=token).values_list('token', flat=True))
if not tokens:
return
message = messaging.MulticastMessage(
notification=messaging.Notification(
title=title,
body=body
),
data=data or {},
tokens=tokens,
)
response = messaging.send_each_for_multicast(message)