2

是否可以從Firebase Cloud Function發送無聲APN(iOS)遠程通知?如果是這樣,這怎麼辦?我想在應用程序不在前臺時發送數據到iOS應用程序實例,而用戶不會看到通知。我可以通過Firebase雲端功能發送靜默推送通知嗎?

我目前發送可以被用戶看到一個通知:

const functions = require('firebase-functions'); 
const admin = require('firebase-admin'); 
admin.initializeApp(functions.config().firebase); 

exports.sendNotifications = functions.database.ref('/events/{pushId}').onWrite(event => { 
    const id = event.params.pushId 

    const payload = { 
    notification: { 
     title: 'An event has occurred!', 
     body: 'Please respond to this event.', 
     event_id: id 
    } 
    }; 

    return admin.messaging().sendToTopic("events", payload); 
}); 

我想是能夠發送id到應用程序沒有可視通知。

回答

3

我想通了,如何修改我的代碼成功發送一個無聲的通知。我的問題是,我一直試圖把content_available放在​​,當它真的應該在options。這是我的新代碼:

const functions = require('firebase-functions'); 
const admin = require('firebase-admin'); 
admin.initializeApp(functions.config().firebase); 

exports.sendNotifications = functions.database.ref('/events/{pushId}').onWrite(event => { 
    const id = event.params.pushId 

    const payload = { 
    data: { 
     title: 'An event has occurred!', 
     body: 'Please respond to this event.', 
     event_id: id 
    } 
    }; 

    const options = { 
    content_available: true 
    } 

    return admin.messaging().sendToTopic("events", payload, options); 
}); 

我成功接收我的iOS設備上的無聲通知執行application:didReceiveRemoteNotification:fetchCompletionHandleruserNotificationCenter:willPresent:withCompletionHandler後。

+0

嗨,我有同樣的問題。你知道如何通過FCM消息控制檯發送content_available:true嗎?我通過FCM消息控制檯發送content_available:true,但我只獲得正常通知,而不是無聲的通知。我該怎麼辦 ?就像你說的那樣,我們必須發送選項,那麼我怎麼能這樣發送? – Moxarth

+0

嗨@Moxarth,我不認爲有可能通過控制檯發送無聲通知。控制檯非常有限,似乎不支持非標準通知。 (請參閱https://stackoverflow.com/questions/43119052/send-silent-push-notification-from-firebase-console)我不確定是否有充分的理由通過控制檯發送它們。 – Eugene

+0

我想檢查測試,是否收到安靜通知。所以我通過FCM消息控制檯發送它。所以根據你,我應該使用什麼或任何方法發送靜默通知到我的應用程序?建議?請通過這個指導我。我第一次使用通知功能。所以。謝謝你指出我的方向。 – Moxarth

-1

如果你在談論APNs通知,答案是:不,如果沒有可視化,你不能發送通知。您只能禁用聲音。但是,您可以傳遞FCM數據消息而不需要可視化。你可以在這裏讀到它:https://firebase.google.com/docs/cloud-messaging/concept-options

{ 
    "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...", 
    "data" : { 
    "Nick" : "Mario", 
    "body" : "great match!", 
    "Room" : "PortugalVSDenmark" 
    } 
} 
+0

在這種情況下,我想了解如何從Firebase雲功能發送FCM數據消息。我已經嘗試了很多有效載荷的格式,但沒有成功。我在原始問題中發佈的代碼如何被修改爲發送FCM數據消息? – Eugene

+0

爲了記錄,事實上有可能「發送沒有可視化的通知」。在iOS中,這稱爲「無聲通知」。 – Eugene