0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

SalesForceMarketingCloud SDKの通知をタップした時、正しく機能しない。

Last updated at Posted at 2023-03-31

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
          )
      }
    },
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?