Alapvetően, ha az alkalmazásunkat PushNotificationból indítja el az Android, és van SplashScreenActivitynk, akkor a MainActivityben nem fogjuk az Extras tömbben megkapni a PushNotification adatait, és nem fogunk tudni reagálni rá.
Mivel a SplashScreenActivity-nk a MainLauncher, ezért ennek az Activitynek az Intent.Extra-jai közé kerülnek be a Pushnotif extrák.
Fontos megjegyezni, hogy az onNewIntent nem fog megfutni terminált alkalmazásnál.
A MainActivity-n az ActivityAttributeban a következőket kell beállítani:
Exported = true, LaunchMode = LaunchMode.SingleTop
A MainActivityben meg kell hívni az onCreate metódusban a következő metódust a LoadApplication hívás után, ha Xamarin esetén a CrossGeeks FirebasePushNotificationPluginját használjuk:
FirebasePushNotificationManager.ProcessIntent(this, Intent);
A SplashScreenActivity ActivityAttributejánál a következőket kell beállítani:
MainLauncher = true, NoHistory = true
A SplashScreenActivity onResume metódusát pedig úgy kell Overrideolni, hogy a MainActivity StartActivityje előtt, kitöltjük az Intent extráit, mintha az Android oprendszer töltötte volna ki a MainActivity számára:
var mainIntent = new Intent(Application.Context, typeof(MainActivity));
if (Intent.Extras != null) {
mainIntent.PutExtras(Intent.Extras);
}
mainIntent.SetFlags(ActivityFlags.SingleTop);
StartActivity(mainIntent);