5

Ich kann meine App für Push-Benachrichtigungen erfolgreich registrieren:RegisterForRemoteNotificationTypes verursacht UI hängen

UIApplication.SharedApplication.RegisterForRemoteNotificationTypes(
    UIRemoteNotificationType.Alert 
    | UIRemoteNotificationType.Badge 
    | UIRemoteNotificationType.Sound); 

Aber immer, wenn ich dies ausführen, hängt meine UI in der Regel 2-3 Sekunden. Selbst wenn ich es früh im App-Lebenszyklus wie empfohlen habe (z. B. sogar WillFinishLaunching), bleibt meine Benutzeroberfläche immer hängen, sobald mein erster ViewController geladen wird.

Mein erster Gedanke war die Registrierung in einem separaten Thread ausführen, aber Monotouch verhindert dies:

// From MonoTouch.UIKit 
public virtual void RegisterForRemoteNotificationTypes(UIRemoteNotificationType types) 
{ 
    UIApplication.EnsureUIThread(); 

Mein nächster Gedanke zumindest einen UIAlertView Box Pop-up war der Benutzer weiß, auf was los ist, aber aus irgendeinem Grund wurde es nicht angezeigt, bis nach die Registrierung stattfand, was dazu führte, dass die UIAlertView öffnen und sofort schließen!

modalPopup = new UIAlertView("Working", "The application is loading...", null, null); 
modalPopup.Show(); 
// It doesn't show here! 
RegisterForRemoteNotificationTypes(); 
// It shows here! 
modalPopup.DismissWithClickedButtonIndex(0, true); 

Wie kann ich entweder

  1. Stoppen Sie die Push-Benachrichtigung Registrierung von binden meine UI-Thread
  2. verschleiern die UI freeze up?

Antwort

1

Bitte benutzen Sie öffentliche override void RegisteredForRemoteNotifications (UIApplication Anwendung, NSData deviceToken)

oder

public override void FailedToRegisterForRemoteNotifications (UIApplication Anwendung, NSError Fehler)

ich ähnliches Problem habe außer Kraft setzen wo ich innerhalb der Registrierten ... -Funktion einen Web-Service aufgerufen habe, um das Geräte-Token hochzuladen. Aber der Web-Aufruf befand sich nicht in einem anderen Thread, weshalb die Benutzeroberfläche eingefroren wurde.

Verwandte Themen