1

Im в настоящее время стремится открыть приложение на странице участника после щелчка уведомления о нажатии, которое успешно получает. Я отправляю идентификатор, как только я получу основы. По какой-то причине идентификатор не возвращается к mainactivity после того, как уведомление было прослушировано.Значение PutExtra не передается в mainactivity из push-уведомления с использованием форм xamarin и android

BroadcastReciever класс отправки уведомлений нажимной

var uiIntent = new Intent(this, typeof(MainActivity)); 
uiIntent.PutExtra("param", "54"); 
var pendingIntent = PendingIntent.GetActivity(this, 0, uiIntent, 0); 

Основное направление деятельности - OnCreate

 string parameterValue = this.Intent.GetStringExtra("param"); 
     if (parameterValue != null) 
     { 
      LoadApplication(new App(parameterValue)); 
     } 
     else 
     { 
      LoadApplication(new App(null)); 
     } 

кажется очень простым, но мое значение параметра всегда нулевые любые мысли благодаря

UPDATE

private void CreateNotification(string title, string desc) 
    { 
     //Create notification 
     var notificationManager = GetSystemService(Context.NotificationService) as NotificationManager; 

     Intent startupIntent = new Intent(this, typeof(MainActivity)); 
     startupIntent.PutExtra("param", "54"); 
     Android.App.TaskStackBuilder stackBuilder = Android.App.TaskStackBuilder.Create(this); 
     stackBuilder.AddParentStack(Java.Lang.Class.FromType(typeof(MainActivity))); 
     stackBuilder.AddNextIntent(startupIntent); 
     const int pendingIntentId = 0; 
     PendingIntent pendingIntent = 
         stackBuilder.GetPendingIntent(pendingIntentId, PendingIntentFlags.OneShot); 

     // var pendingIntent = PendingIntent.GetActivity(this, 0, startupIntent, 0); 


     ////Create an intent to show ui 
     //var uiIntent = new Intent(this, typeof(MainActivity)); 
     //uiIntent.PutExtra("param", "54"); 
     //var pendingIntent = PendingIntent.GetActivity(this, 0, uiIntent, 0); 


     //Create the notification using Notification.Builder 
     //Use Android Compatibility Apis 

     var notification = new NotificationCompat.Builder(this).SetContentTitle(title) 
      .SetSmallIcon(Android.Resource.Drawable.SymActionEmail) 
      //we use the pending intent, passing our ui intent over which will get called 
      //when the notification is tapped. 
      .SetContentIntent(pendingIntent) 
      .SetContentText(desc) 
      .SetSound(RingtoneManager.GetDefaultUri(RingtoneType.Notification)) 

      //Auto cancel will remove the notification once the user touches it 
      .SetAutoCancel(true). 
      Build(); 


     //Show the notification 
     if (notificationManager != null) 
     { 
      notificationManager.Notify(1, notification); 
     } 
    } 

полный метод с другим подходом, но все же значение не переходит к mainactivity. всегда есть нуль?

+0

'строке ParameterValue = this.Intent.GetStringExtra ("пары");' попробовать эту функцию в 'onResume()' функциях жизненного цикла. –

ответ

0

Это то, что заставило его работать на меня.

первоначально RegisterInGcm(); был выше parameterValue, но перемещение его ниже заставило его работать.

//RegisterInGcm(); Wrong 

     string parameterValue = this.Intent.GetStringExtra("param"); 
     if (parameterValue != null) 
     { 
      LoadApplication(new App(parameterValue)); 
     } 
     else 
     { 
      LoadApplication(new App(null)); 
     } 

     RegisterInGcm(); 

безумно простой изменение, много тестов, чтобы сделать !!

 Смежные вопросы

  • Нет связанных вопросов^_^