0

Ich arbeite an der "Funktion" der Push-Benachrichtigung Trigger in Windows Phone 8.1 verfügbar. Mein Ziel ist es, dies mit einem Windows Phone Silverlight 8.1 Projekt zu machen. Soweit ich weiß, sollte es basierend auf meiner Lektüre funktionieren.Push-Benachrichtigung Trigger auf Windows Phone 8.1 Silverlight

Nach 2 Tagen bin ich total fest. Egal was ich versuche. Wenn ich eine rohe Benachrichtigung an meine App sende, wird meine App abgebrochen und ich gehe zurück zum Windows-Menü. Die Ausgabe: Das Programm '[1852] BACKGROUNDTASKHOST.EXE' wurde mit Code 1 (0x1) beendet. Das Programm '[2712] AgHost.exe' wurde mit Code 1 (0x1) beendet.

Zustand:

  • Die App erhält die Benachrichtigung. Es löst OnPushNotificationReceived aus. (Nach diesem Ereignis wird die App abgebrochen.)
  • Die Push-Benachrichtigungsaufgabe wird deklariert und der Einstiegspunkt ist auf Push.Notification festgelegt.
  • Ich erstelle eine Windows Runtime-Komponente für Windows Phone 8.1, um die Hintergrundaufgabe auszuführen.
  • Die Hintergrundaufgabe ist gut registriert.

private async void RegisterBackgroundTask() 
{ 
    UnregisterBackgroundTask(taskName); 
    BackgroundAccessStatus backgroundStatus = await BackgroundExecutionManager.RequestAccessAsync(); 
    if (backgroundStatus != BackgroundAccessStatus.Denied && backgroundStatus != BackgroundAccessStatus.Unspecified) 
    { 
     try 
     { 
      BackgroundTaskBuilder taskBuilder = new BackgroundTaskBuilder(); 
      taskBuilder.Name = taskName; 
      PushNotificationTrigger trigger = new PushNotificationTrigger(); 
      taskBuilder.SetTrigger(trigger); 
      taskBuilder.TaskEntryPoint = "Push.Notification"; 
      BackgroundTaskRegistration task = taskBuilder.Register(); 
     } 
     catch (Exception ex) 
     { } 
    } 
} 
  • die Hintergrundaufgabe:

public sealed class Notification 
{ 
    public void Run(IBackgroundTaskInstance taskInstance) 
    { 
     Debug.WriteLine("Background starting..."); 
     Debug.WriteLine("Background completed!"); 
    } 
} 

Ich habe keine Ahnung, was ich falsch mache. Gibt es jemanden, der es funktioniert? (Nicht in der Theorie) Informationen habe ich 2 Warnungen, dass ich Sorgen:

  • Ich habe eine Fehlpaarung in der Prozessarchitektur in meinen 2-Projekten. Mein Windows Phone Projekt verwendet "Any CPU" (kann das nicht ändern). Meine Windows Runtime Komponente Projekt verwenden "ARM". Wenn ich "Any CPU" wor meine WinRT verwende, habe ich einen Fehler: /Plattform: anycpu32bitpreferred kann nur mit/t verwendet werden: exe,/t: winexe und/t. appcontainerexe
  • ein Konflikt auf eine abhängige Montage der zwei Projekte scheint zu sein,

gefunden Konflikte zwischen verschiedenen Versionen dieselbe abhängige Assembly Doppelklicken Sie in Visual Studio auf diese Warnung (oder wählen Sie sie aus und drücken Sie die Eingabetaste), um die Konflikte zu beheben, andernfalls fügen Sie die folgenden Bindungsumleitungen zum Knoten "runtime" in der Anwendungskonfigurationsdatei hinzu:

Vielen Dank im Voraus

+0

Warum nicht das SignalR-Framework verwenden, um Push-Benachrichtigungen zu erstellen? – Flaugzig

Antwort

1

Ich habe es endlich funktioniert.

Es gab einen Fehler in meinem ersten Code, den ich IBackgroundTask zu implementieren vergessen zu:

public sealed class Notification : IBackgroundTask 
{ 
    public void Run(IBackgroundTaskInstance taskInstance) 
    { 
     Debug.WriteLine("Background starting..."); 
     Debug.WriteLine("Background completed!"); 
    } 
} 

Und ich musste meine Aufgabe async machen ...

public async void Run(IBackgroundTaskInstance taskInstance) 
{ 
    BackgroundTaskDeferral deferral = taskInstance.GetDeferral(); 
    // perform your async task and then call deferral complete 
    await Test(); 
    deferral.Complete(); 
} 

private static async Task Test() 
{ 
    //TODO with an await 
} 

Hoffe, dass dies jemand helfen wird.

Verwandte Themen