SFMC SDKの通知をタップした時、正しく機能しない。
SFMCSDKを使用したPush通知機能で、
通知が複数溜まると、正しい遷移先に遷移されないという事象が発生した。
原因
NotificationManagerのchannelの指定がdefaultになっていなかった。
対策
notification managerのchannel指定の分岐をなくし、defaultChannelをcreateする。
もし指定が必要なら、指定のチャンネルのStringに設定する。
なのでこれを ↓
NotificationManager.NotificationChannelIdProvider { context, notificationMessage ->
if (TextUtils.isEmpty(notificationMessage.url)) {
NotificationManager.createDefaultNotificationChannel(context)
} else {
"UrlNotification"
}
こうする ↓
NotificationManager.NotificationChannelIdProvider { context, notificationMessage ->
NotificationManager.createDefaultNotificationChannel(context)
}
参考
備考
通知をタップした時の挙動は、
when 以下の 指定をいじくればいい
公式実装の場合、
url.isNullOrEmpty() の場合は、アプリ(MainActivityに遷移)し、
そうでない場合は、ブラウザでurlを表示するようになっている。
もし、特定のurlの時、このActivityを表示したい。
みたいなことをする場合は、
intentを編集して遷移先Activityを指定する。
取得したurlを遷移先でも使用したいなら、
intentPutExtraで遷移先まで持っていく。
NotificationManager.NotificationLaunchIntentProvider { context, notificationMessage ->
val requestCode = Random().nextInt()
val url = notificationMessage.url
when {
url.isNullOrEmpty() ->
PendingIntent.getActivity(
context,
requestCode,
Intent(context, MainActivity::class.java),
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
)
else ->
PendingIntent.getActivity(
context,
requestCode,
Intent(Intent.ACTION_VIEW, Uri.parse(url)),
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
)
}
},