Push Notification (FCM)
Enable / Disable Push Notification
You can set whether users receive push notifications.
// Enable push notification
await TalkPlusAPI.enablePushNotification(errorCallback: (errorCode, errorMessage){
});
// Disable push notification
await TalkPlusAPI.disablePushNotification(errorCallback: (errorCode, errorMessage){
});
Push Notification
Push Notification is handled by FCM.
First, integrate FCM on TalkPlus dashboard. Then, when a user logs in, call registerFCMToken
function to register FCM token from that device.
The following code demonstrates how you can obtain and register an FCM token.
await TalkPlusAPI.registerFCMToken(
fcmToken,
errorCallback: (errorCode, errorMessage){}
);
You can then call processFirebaseCloudMessagingData
function to handle push notifications, as shown below.
When app is running in the foreground, callback is automatically handled by an already registered ChannelListener
.
When app is in the background, app is currently not running and may not have a callback already registered. In that case, you can register an anonymous callback to handle events as shown below:
(processFirebaseCloudMessagingData
function accepts boolean
value for its last parameter forceCallback
. You must set forceCallback
to true to receive callbacks from FCM, regardless of whether you are already receiving callbacks from the realtime connection.)
class Application extends StatefulWidget {
@override
State<StatefulWidget> createState() => _Application();
}
class _Application extends State<Application> {
// It is assumed that all messages contain a data field with the key 'type'
Future<void> setupInteractedMessage() async {
// Get any messages which caused the application to open from
// a terminated state.
RemoteMessage? initialMessage =
await FirebaseMessaging.instance.getInitialMessage();
// If the message also contains a data property with a "type" of "chat",
// navigate to a chat screen
if (initialMessage != null) {
_handleMessage(initialMessage);
}
// Also handle any interaction when the app is in the background via a
// Stream listener
FirebaseMessaging.onMessageOpenedApp.listen(_handleMessage);
}
void _handleMessage(RemoteMessage message) {
if (message.data.containsKey("talkplus")) {
// channelId, title, body 정보가 필요한 경우 아래와 같이 사용합니다.
// var msg = convert.jsonDecode(message.data['talkplus'])
// String channelId = talkplus.getString("channelId");
// String messageId = talkplus.getString("messageId"); // available only for message event
// String title = talkplus.getString("title");
// String body = talkplus.getString("body");
await TalkPlusAPI.processFirebaseCloudMessagingData(message.data, onetimeListener, forceCallback);
}
}
@override
void initState() {
super.initState();
// Run code required to handle interacted messages in an async function
// as initState() must not be async
setupInteractedMessage();
}
@override
Widget build(BuildContext context) {
return Text("...");
}
}
In order to have complete control of FCM push notification both in foreground and background, you need to receive FCM data type push notification and handle it via onMessageReceived
. To enable this feature, you need to make sure the following settings are in place in dashboard:
Enable push notification

Disable push notification for Android (this allows only data type FCM notifications for Android)

Last updated