title: Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent, On AlarmPingSender
body: <h2>Problem</h2>
  <p>Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent. I got it after updating target SDK to 31. the error always come after AlarmPingSender. But i dont know any class that used AlarmPingSender.</p>
  <pre><code>
  2021-10-31 10:43:04.990 17031-17341/com.app.mobile D/AlarmPingSender: Register alarmreceiver to MqttServiceMqttService.pingSender.com.app.mobile-2e24ccbde048f2e91635651784
  2021-10-31 10:43:04.993 17031-17341/com.app.mobile E/AndroidRuntime: FATAL EXCEPTION: MQTT Rec: com.app.mobile-2e24ccbde048f2e91635651784
      Process: com.app.mobile, PID: 17031
      java.lang.IllegalArgumentException: com.app.mobile: Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent.
      Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some functionality depends on the PendingIntent being mutable, e.g. if it needs to be used with inline replies or bubbles.
          at android.app.PendingIntent.checkFlags(PendingIntent.java:375)
          at android.app.PendingIntent.getBroadcastAsUser(PendingIntent.java:645)
          at android.app.PendingIntent.getBroadcast(PendingIntent.java:632)
          at org.eclipse.paho.android.service.AlarmPingSender.start(AlarmPingSender.java:76)
          at org.eclipse.paho.client.mqttv3.internal.ClientState.connected(ClientState.java:1150)
          at org.eclipse.paho.client.mqttv3.internal.ClientState.notifyReceivedAck(ClientState.java:987)
          at org.eclipse.paho.client.mqttv3.internal.CommsReceiver.run(CommsReceiver.java:118)
          at java.lang.Thread.run(Thread.java:920)
  
  </code></pre>
  <h3>What I Already done</h3>
  <ul>
  <li>Upgrade WorkManager to 2.7.0</li>
  <li>set AllProject to force use WorkManager to 2.7.0</li>
  <li>change all existing PendingIntent to use FLAG_IMMUTABLE</li>
  <li>there's old code that still use gcm and disable it</li>
  <li>Updating all Firebase package (some said its because of later version of analytics)</li>
  </ul>
  <h3>Library Used</h3>
  <ul>
  <li>OneSignal</li>
  <li>Qiscus</li>
  <li>Firebase</li>
  <li>WorkManager</li>
  </ul>