tutorial specific notificationhubs notificationhub notification microsoft hub example android azure push-notification azure-notificationhub

specific - xamarin android push notifications azure



Android Android Azure Notification hubregister (3)

En general, solo usar hub.unregister() será suficiente. Alternativamente, simplemente llame a hub.register() con una etiqueta no válida, y debe sobrescribir el registro existente.

Sin embargo, descubrí que los registros a veces se duplican en el centro de notificaciones (el mismo PNS, diferentes etiquetas / ID de registro de Azure) y eliminar el unregister solo elimina uno de ellos, por lo que sigue recibiendo notificaciones. Tal vez esto suceda cuando reinstale la aplicación, no estoy seguro.

De todos modos, para solucionar esto, puede eliminar el registro manualmente (Visual Studio> Server Explorer> Centros de notificación> Seleccionar uno> pestaña Registros de dispositivo).

Tengo un problema al anular el registro del concentrador de notificaciones de Azure.

Estoy usando el método unregister() esta manera:

gcm = GoogleCloudMessaging.getInstance(getApplicationContext()); String connectionString = "xxx"; hub = new NotificationHub("xxx", connectionString, getApplicationContext()); try { gcm.unregister(); hub.unregister(); Log.d("GCM","Unregister"); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); };

No recibo ninguna excepción en este código, pero sigo recibiendo notificaciones push. Cualquier ayuda será apreciada. Gracias por adelantado.


Creo que deberías usar un Thread diferente para anular el registro de ese dispositivo. Debajo de la manera funciona para mí correctamente. No se olvide de mantener el hub que se usa para registrar el dispositivo. A continuación, HubKeeper una clase HubKeeper y mantuve ese hub en la clase HubKeeper como estático. Pero de manera diferente, he usado FCM en lugar de GCM

Thread thread = new Thread(new Runnable() { @Override public void run() { try { if (HubKeeper.hub != null) { HubKeeper.hub.unregister(); } } catch (Exception e) { e.printStackTrace(); } } }); thread.setPriority(Thread.MIN_PRIORITY); thread.start();


No debe anular el registro de GCM.

Por qué raramente debería cancelar el registro

Solo debe cancelar el registro en casos excepcionales, como si desea que una aplicación deje de recibir mensajes o si sospecha que la identificación de registro se ha visto comprometida. En general, una vez que una aplicación tiene una identificación de registro, no debería necesitar cambiarla.

En particular, nunca debe anular el registro de su aplicación como un mecanismo para cerrar la sesión o cambiar de usuario, por las siguientes razones:

  • Un ID de registro no está asociado con un usuario registrado en particular. Si cancela el registro y luego vuelve a registrarse, GCM puede devolver la misma ID o una ID diferente, no hay garantía de ninguna manera.

  • La falta de registro puede demorar hasta 5 minutos en propagarse.

  • Después de cancelar el registro, la reinscripción puede demorar nuevamente hasta 5 minutos en propagarse. Durante este tiempo, los mensajes pueden ser rechazados debido al estado de no registro, y después de todo esto, los mensajes pueden ir al usuario incorrecto.

Más información aquí: http://developer.android.com/google/gcm/gcm.html#unreg-why

Como está utilizando Azure Notification Hub, solo necesita eliminar el registro desde allí, no desde GCM.