3

J'utilise APNS Sharp bibliothèque pour ma notification push Apple. J'ai délogé de Here. J'utiliser un programme de test échantillon fourni par la bibliothèque pointue APNS sans aucune modification.
il n'envoie simplement aucune notification jusqu'à ce que je mette le point de rupture à cette ligne de code. si je mets le point de rupture. Je travaille juste bien. Est ce comportement attendu ou je fais quelque chose de mal. et aussi je ne reçois aucune exception. Merci pour toute aide. est ici le codeApple Push notification avec APNS forte

static void Main(string[] args) 
{ 
    bool sandbox = true; 
    string testDeviceToken = "Token"; 
    string p12File = "apn_developer_identity.p12"; 
    string p12FilePassword = "yourpassword"; 
    int sleepBetweenNotifications = 15000; 
    string p12Filename = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, p12File); 
    NotificationService service = new NotificationService(sandbox, p12Filename, p12FilePassword, 1); 
    service.SendRetries = 5; 
    service.ReconnectDelay = 5000; //5 seconds 
    service.Error += new NotificationService.OnError(service_Error); 
    service.NotificationTooLong += new NotificationService.OnNotificationTooLong(service_NotificationTooLong); 
    service.BadDeviceToken += new NotificationService.OnBadDeviceToken(service_BadDeviceToken); 
    service.NotificationFailed += new NotificationService.OnNotificationFailed(service_NotificationFailed); 
    service.NotificationSuccess += new NotificationService.OnNotificationSuccess(service_NotificationSuccess); 
    service.Connecting += new NotificationService.OnConnecting(service_Connecting); 
    service.Connected += new NotificationService.OnConnected(service_Connected); 
    service.Disconnected += new NotificationService.OnDisconnected(service_Disconnected); 
    Notification alertNotification = new Notification(testDeviceToken); 
    alertNotification.Payload.Alert.Body = "Testing {0}..."; 
    alertNotification.Payload.Sound = "default"; 
    alertNotification.Payload.Badge = i; 
    if (service.QueueNotification(alertNotification)) 
     Console.WriteLine("Notification Queued!"); 
    else 
     Console.WriteLine("Notification Failed to be Queued!"); 
    Console.WriteLine("Cleaning Up..."); 

    service.Close();// if i dont put a break point in here, it simply does not send any notification 

    service.Dispose(); 

} 

J'espère que ma question est claire ...
Mise à jour: je suis coincé here.please quelqu'un peut me aider.

+0

juste vérifier: Vous avez votre cert, non? est votre mot de passe 'mot de passe'? Je me demandais simplement si c'était quelque chose qui restait de l'exemple. – ACBurk

+0

Merci ACBurk. oui j'ai tout. ça marche bien si je mets un point de rupture. – Nnp

Répondre

2

J'ai découvert le problème. c'était une erreur dans le flux de travail de la bibliothèque APNS SHARP. J'appelle cette méthode après la mise en file d'attente de toutes les notifications.

EDIT:

comme
service.start();
et voici la méthode

 public void Send() 
    { 
     foreach (NotificationConnection conn in this.notificationConnections) 
     { 
      // Console.Write("Start Sending"); 
      conn.start(P12File, P12FilePassword); 
     } 
    } 
+0

que voulez-vous dire? quelle erreur? Im en utilisant du code de la bibliothèque dans vb.net pour faire ce push aux apns. et je reçois une "notification en file d'attente" mais la notification n'est jamais envoyée à l'appareil ... comment est-ce possible? –

+1

lorsque vous dites service NotificationService = new NotificationService(), il démarre un autre Thred qui lit à partir de la file d'attente. mais avant d'ajouter une notification à la file d'attente déjà terminée, car il n'y avait pas de notification. avoir du sens> si vous mettez un point d'arrêt, alors le fil d'écoute ne finira pas parce qu'il attend sur le point de rupture. – Nnp

+0

alors comment l'avez-vous réparé? – 001

1

Je vois cela aussi bien. En regardant la méthode que je trouve ce NotificationConnection.Close():

// dormir ici pour éviter une condition de course // dans laquelle une notification pourrait être mis en attente alors que le thread de travail // dort après sa boucle, mais si nous définissons la fermeture true dans les 100 ms, // les notifications mises en file d'attente pendant cette période ne seront pas supprimées car la boucle // quitterait en raison de closing = true; // 250 ms devraient être suffisamment de temps pour que la boucle supprime toutes les notifications restantes // après l'arrêt de l'acceptation ci-dessus Thread.Sleep (250); Dans la boucle mentionnée, j'ai trouvé: Thread.Sleep (500);

Réglage du temps de sommeil dans la méthode proche de 1000 fixé pour moi;) - réponse de: http: //code.google.com/p/apns-sharp/issues/detail id = 41

Questions connexes