Merge pull request #476 from bipproduction/amalia/01-jul-25
upd: api fcm many device
This commit is contained in:
@@ -5,7 +5,7 @@ import _ from "lodash";
|
||||
import moment from "moment";
|
||||
import "moment/locale/id";
|
||||
import { NextResponse } from "next/server";
|
||||
import { sendFCMNotification } from "../../../../../xsend";
|
||||
import { sendFCMNotificationMany } from "../../../../../xsendMany";
|
||||
export const dynamic = 'force-dynamic'
|
||||
|
||||
|
||||
@@ -100,7 +100,11 @@ export async function GET(request: Request) {
|
||||
createdAt: moment(v.createdAt).format("ll")
|
||||
}))
|
||||
|
||||
await sendFCMNotification('c89yuexsS_uc1tOErVPu5a:APA91bEb6tEKXAfReZjFVJ2mMyOzoW_RXryLSnSJTpbIVV3G0L_DCNkLuRvJ02Ip-Erz88QCQBAt-C2SN8eCRxu3-v1sBzXzKPtDv-huXpkjXsyrkifqvUo')
|
||||
// await sendFCMNotification('c89yuexsS_uc1tOErVPu5a:APA91bEb6tEKXAfReZjFVJ2mMyOzoW_RXryLSnSJTpbIVV3G0L_DCNkLuRvJ02Ip-Erz88QCQBAt-C2SN8eCRxu3-v1sBzXzKPtDv-huXpkjXsyrkifqvUo')
|
||||
await sendFCMNotificationMany([
|
||||
'c89yuexsS_uc1tOErVPu5a:APA91bEb6tEKXAfReZjFVJ2mMyOzoW_RXryLSnSJTpbIVV3G0L_DCNkLuRvJ02Ip-Erz88QCQBAt-C2SN8eCRxu3-v1sBzXzKPtDv-huXpkjXsyrkifqvUo',
|
||||
'cRz96GHKTRaQaRJ35e8Hxa:APA91bEUSxE0VPbqKSzseQ_zGhbYsDofMexKykRw7o_3z2aPM9YFmZbeA2enrmb3qjdZ2g4-QQtiNHAyaZqAT1ITOrwo9jVJlShTeABmEFYP5GLEUZ3dlLc'
|
||||
])
|
||||
|
||||
return NextResponse.json({ success: true, message: "Berhasil mendapatkan pengumuman", data: allData, }, { status: 200 });
|
||||
} catch (error) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import elysia from "elysia";
|
||||
import { sendFCMNotification } from "../../../../../../xsend";
|
||||
import { sendFCMNotificationMany } from "../../../../../../xsendMany";
|
||||
|
||||
|
||||
const ApiV2 = new elysia({
|
||||
@@ -11,7 +11,11 @@ const ApiV2 = new elysia({
|
||||
'c89yuexsS_uc1tOErVPu5a:APA91bEb6tEKXAfReZjFVJ2mMyOzoW_RXryLSnSJTpbIVV3G0L_DCNkLuRvJ02Ip-Erz88QCQBAt-C2SN8eCRxu3-v1sBzXzKPtDv-huXpkjXsyrkifqvUo',
|
||||
'cRz96GHKTRaQaRJ35e8Hxa:APA91bEUSxE0VPbqKSzseQ_zGhbYsDofMexKykRw7o_3z2aPM9YFmZbeA2enrmb3qjdZ2g4-QQtiNHAyaZqAT1ITOrwo9jVJlShTeABmEFYP5GLEUZ3dlLc'
|
||||
]
|
||||
await sendFCMNotification('c89yuexsS_uc1tOErVPu5a:APA91bEb6tEKXAfReZjFVJ2mMyOzoW_RXryLSnSJTpbIVV3G0L_DCNkLuRvJ02Ip-Erz88QCQBAt-C2SN8eCRxu3-v1sBzXzKPtDv-huXpkjXsyrkifqvUo')
|
||||
// await sendFCMNotification('c89yuexsS_uc1tOErVPu5a:APA91bEb6tEKXAfReZjFVJ2mMyOzoW_RXryLSnSJTpbIVV3G0L_DCNkLuRvJ02Ip-Erz88QCQBAt-C2SN8eCRxu3-v1sBzXzKPtDv-huXpkjXsyrkifqvUo')
|
||||
await sendFCMNotificationMany([
|
||||
'c89yuexsS_uc1tOErVPu5a:APA91bEb6tEKXAfReZjFVJ2mMyOzoW_RXryLSnSJTpbIVV3G0L_DCNkLuRvJ02Ip-Erz88QCQBAt-C2SN8eCRxu3-v1sBzXzKPtDv-huXpkjXsyrkifqvUo',
|
||||
'cRz96GHKTRaQaRJ35e8Hxa:APA91bEUSxE0VPbqKSzseQ_zGhbYsDofMexKykRw7o_3z2aPM9YFmZbeA2enrmb3qjdZ2g4-QQtiNHAyaZqAT1ITOrwo9jVJlShTeABmEFYP5GLEUZ3dlLc'
|
||||
])
|
||||
return {
|
||||
data: "success elysia"
|
||||
};
|
||||
|
||||
@@ -2,7 +2,7 @@ import { NextResponse } from "next/server";
|
||||
|
||||
export async function GET(request: Request) {
|
||||
try {
|
||||
return NextResponse.json({ success: true, version: "1.5.2", tahap: "beta", update: "-percobaan firebase admin fcm" }, { status: 200 });
|
||||
return NextResponse.json({ success: true, version: "1.5.3", tahap: "beta", update: "-percobaan firebase admin fcm many device" }, { status: 200 });
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return NextResponse.json({ success: false, version: "Gagal mendapatkan version, coba lagi nanti (error: 500)", reason: (error as Error).message, }, { status: 500 });
|
||||
|
||||
65
xsendMany.ts
Normal file
65
xsendMany.ts
Normal file
@@ -0,0 +1,65 @@
|
||||
// Impor Firebase Admin SDK
|
||||
import CryptoJs from 'crypto-js';
|
||||
import { cert, getApps, initializeApp } from "firebase-admin/app";
|
||||
import { getMessaging } from "firebase-admin/messaging";
|
||||
|
||||
const enc = "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"
|
||||
const decrypt = CryptoJs.AES.decrypt(enc, "amal").toString(CryptoJs.enc.Utf8)
|
||||
|
||||
// Fungsi untuk mengirim notifikasi FCM
|
||||
export async function sendFCMNotificationMany(token: string[]) {
|
||||
// const serviceAccount = await fs.readFile(path.join(process.cwd(), "key.json"));
|
||||
if(getApps().length === 0){
|
||||
initializeApp({
|
||||
credential: cert(JSON.parse(decrypt)),
|
||||
});
|
||||
}
|
||||
|
||||
try {
|
||||
// Konfigurasi pesan
|
||||
const message = {
|
||||
notification: {
|
||||
title: "Notifikasi Many Encrypted api",
|
||||
body: "Ini adalah isi notifikasi ke banyak device key diencrypt dan api",
|
||||
},
|
||||
token,
|
||||
data: {
|
||||
id: 'cm1eqwkwj00067j2bzejyh9u7',
|
||||
category: 'division',
|
||||
content: 'cm1eqwkvu00017j2b8qnisp9g',
|
||||
},
|
||||
// Opsional: konfigurasi Android
|
||||
android: {
|
||||
priority: "high",
|
||||
notification: {
|
||||
sound: "default",
|
||||
channelId: "default_channel",
|
||||
},
|
||||
},
|
||||
// Opsional: konfigurasi APNS (iOS)
|
||||
apns: {
|
||||
payload: {
|
||||
aps: {
|
||||
sound: "default",
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
// Kirim pesan
|
||||
const response = await getMessaging().sendEachForMulticast({
|
||||
tokens: token,
|
||||
...message,
|
||||
} as any);
|
||||
console.log("Notifikasi berhasil dikirim:", response);
|
||||
return response;
|
||||
} catch (error) {
|
||||
console.error("Error mengirim notifikasi:", error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
// sendFCMNotificationMany([
|
||||
// 'c89yuexsS_uc1tOErVPu5a:APA91bEb6tEKXAfReZjFVJ2mMyOzoW_RXryLSnSJTpbIVV3G0L_DCNkLuRvJ02Ip-Erz88QCQBAt-C2SN8eCRxu3-v1sBzXzKPtDv-huXpkjXsyrkifqvUo',
|
||||
// 'cRz96GHKTRaQaRJ35e8Hxa:APA91bEUSxE0VPbqKSzseQ_zGhbYsDofMexKykRw7o_3z2aPM9YFmZbeA2enrmb3qjdZ2g4-QQtiNHAyaZqAT1ITOrwo9jVJlShTeABmEFYP5GLEUZ3dlLc'
|
||||
// ])
|
||||
Reference in New Issue
Block a user