J'essaie de mettre en œuvre des notifications push pour MonoTouch, mais je ne pouvais pas trouver d'échantillons de cela n'importe où. Mon problème tente de lire les appareilsID dans une chaîne .NET.
La sortie ci-dessous n'est que de nombreux points d'interrogation, donc je fais quelque chose de mal ici. P>
Toute aide serait grandement appréciée! P>
public override void RegisteredForRemoteNotifications (UIApplication application, NSData deviceToken) { Console.WriteLine("Converting device ID..."); NSString s = NSString.FromData(deviceToken, NSStringEncoding.UTF8); Console.WriteLine("DEVICE ID IS: " + s); s = NSString.FromData(deviceToken, NSStringEncoding.ASCIIStringEncoding); Console.WriteLine("DEVICE ID IS: " + s); s = NSString.FromData(deviceToken, NSStringEncoding.Unicode); Console.WriteLine("DEVICE ID IS: " + s); }
3 Réponses :
Il existe un opérateur pour une conversion implicite à MonoTouch.
Donc, vous venez de faire: p> Vous pouvez utiliser nstring code> ' S
TOSTRING () CODE> Méthode: P>
NSString s = NSString.FromData(deviceToken, NSStringEncoding.UTF8);
string csstring = s.ToString();
Hmmm, ne me donne toujours aucun identifiant de périphérique. Je viens d'obtenir le périphérique ID = ????:?. V? I ???????] ??????>? L; Si j'utilise le codage ASCII. L'UTF8 me donne une chaîne vide. Alors peut-être qu'il y a quelque chose qui ne va pas avec l'enregistrement des pousses? Semble étrange cependant que je reçois le rappel dans "Enregistrer"
C'est probablement un autre problème. Pas un problème de conversion. Sur la nstring, vous obtenez la valeur si vous l'imprimez?
Qu'est-ce que vous obtenez comme jeton de l'appareil? C'est votre problème je pense.
Voici le code que je voulais écrire dans MonoTouch (regard sur les 3-4 premières lignes dans la méthode « didRegisterForRemoteNotificationsWithDeviceToken »: bitbucket.org/urbanairirship/push_sample/src/6a5ac0b371ef/apns / ...
Désolé, je l'ai compris! Merci pour l'aide! Je viens de devoir baser64 coder les données binaires. Je pensais qu'ils ont obtenu la chaîne de l'appareil directement des données binaires, mais elles ont codé64.
J'ai réussi à mettre en œuvre cela, et j'ai utilisé le code suivant:
< 64characterlonghexstring >
Merci, tache sur! En fait, je viens de trouver ce que je cherchais et que Christian Weyer a écrit un article basé sur ma demande. weblogs.thinkTecture.com/cweyer/2010/12/...
Voici un excellent article montrant comment faire des notifications push avec MonoTouch:
Voici l'extrait qui fait ce que vous voulez: P>
var str = (NSString)Runtime.GetNSObject ( Messaging.intptr_objc_msgSend (deviceToken.Handle, new Selector("description").Handle)); var deviceTokenString = str.ToString ().Replace ("<", "").Replace (">", "").Replace (" ", "");
Merci, il a effectivement fait cet article sur la base de cette question :-)