Push Notification
사용자가 Push Notification을 받을 지 여부를 설정할 수 있습니다.
// Enable push notification
TalkPlus.enablePushNotification(new TalkPlus.CallbackListener<TPUser>() {
@Override
public void onSuccess(TPUser tpUser) {
}
@Override
public void onFailure(int i, Exception e) {
}
});
// Disable push notification
TalkPlus.disablePushNotification(new TalkPlus.CallbackListener<TPUser>() {
@Override
public void onSuccess(TPUser tpUser) {
}
@Override
public void onFailure(int i, Exception e) {
}
});
TalkPlus의 Push Notification은 FCM을 통하여 이루어지게 됩니다. 기본적인 FCM을 연동하신 후, User를 로그인한 후
registerFCMToken
함수를 호출하여 FCM 토큰을 User 세션에 연동하 여야 합니다.TalkPlus.registerFCMToken(fcmToken, new TalkPlus.CallbackListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
}
@Override
public void onFailure(int i, Exception e) {
}
});
이후 아래와 같이
onMessageReceived
에 TalkPlus에서 제공하는 processFirebaseCloudMessagingData
함수를 호출하는 코드를 삽입하여 Push Notification을 처리할 수 있습니다.Foreground인 경우 기존에 등록되어있는
ChannelListener
를 통하여 자동으로 콜백을 올리게 됩니다.Background인 경우 앱이 실행되어있지 않은 상태라 등록된 콜백이 없을 수 있으므로 아래와 같이 1회용 콜백을 함께 등록하여 이벤트를 받아 원하는 동작을 수행하실 수 있습니다.
processFirebaseCloudMessagingData
함수에서 마지막 인자값으로 forceCallback
을 boolean
으로 받게 되어 있는데, forceCallback
은 실시간 채널에서 콜백 수신과 상관없이 FCM 통해 무조건 콜백을 받아 처리하기 위해서는 true
로 넘겨주셔야 합니다.@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
if (remoteMessage.getData().containsKey("talkplus")) {
try {
// channelId, title, body 정보가 필요한 경우 아래와 같이 사용합니다.
JSONObject talkplus = new JSONObject(remoteMessage.getData().get("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");
} catch (JSONException e) {
}
if (isBackground) {
TalkPlus.processFirebaseCloudMessagingData(remoteMessage.getData(), new TalkPlus.ChannelListener() {
// TODO: 각 서비스의 시나리오에 맞춰 Push Notification 표시
@Override
public void onMemberAdded(TPChannel channel, List<TPUser> users) {
}
@Override
public void onMemberLeft(TPChannel channel, List<TPUser> users) {
}
@Override
public void onMessageReceived(TPChannel channel, TPMessage message) {
}
@Override
public void onChannelChanged(TPChannel channel) {
}
}, true);
} else {
TalkPlus.processFirebaseCloudMessagingData(remoteMessage.getData(), true);
}
}
}
포그라운드와 백그라운드 모두 동일하게
onMessageReceived
를 통해 개발자가 원하는대로 컨트롤 하려면 Data타입의 푸쉬를 받아야 합니다. 대시보드에 다음과 같이 설정해야 data 타입 푸쉬를 받게 됩니다.- 전체 Push Notification 설정 활성화

- AOS "메시지 수신 알림" 비활성화

Last modified 12d ago