Je suis nouveau dans tous les domaines de notification push iOS. J'ai essayé une notification Push de base en utilisant le code suivant et cela fonctionne parfaitement. J'utilise "using JdSoft.Apple.Apns.Notifications;" pour y parvenir. Voici le code:
Notification alertNotification = new Notification(testDeviceToken);
alertNotification.Payload.Alert.Body = "Hello World";
alertNotification.Payload.Sound = "default";
alertNotification.Payload.Badge = 1;
Cela donne la sortie à l'iPhone dans la structure suivante:
{
aps = {
alert = "Hello World";
badge = 1;
sound = default;
};
}
J'ai maintenant l'obligation d'ajouter une balise personnalisée comme suit:
{
"aps": {
"alert": "Hello World",
"sound": "default",
"Person": {
"Address": "this is a test address",
"Name": "First Name",
"Number": "023232323233"
}
}
}
J'ai du mal à mettre "Person" dans "aps". Je sais également que vous pouvez ajouter un attribut personnalisé à l'aide du code suivant:
alertNotification.Payload.AddCustom ("Personne", Newtonsoft.Json.JsonConvert.SerializeObject (stat));
Mais le code ci-dessus n'ajoute pas de balise "aps". Veuillez me dire comment cela peut être réalisé?
Vous n'êtes pas autorisé à mettre des balises personnalisées à l'intérieur de la balise aps . Voici ce qu'en disent les documentations:
Les fournisseurs peuvent spécifier des valeurs de charge utile personnalisées en dehors de l'espace de noms aps réservé à Apple. Les valeurs personnalisées doivent utiliser les types structurés et primitifs JSON: dictionnaire (objet), tableau, chaîne, nombre et booléen.
Donc, dans votre cas, vous devriez faire quelque chose comme:
{
"aps": {
"alert": "Hello World",
"sound": "default"
},
"Person": {
"Address": "this is a test address",
"Name": "First Name",
"Number": "023232323233"
}
}
Par conséquent, vous pouvez lire votre charge utile personnalisée en recherchant sa clé dans le JSON principal, plutôt que dans "aps":
NSLog(@"%@",notification['Person']['Address']);
Ci-dessus sortira:
c'est une adresse de test
Vous pouvez trouver plus d'informations sur les charges utiles personnalisées, ainsi que quelques exemples dans Apple docs .
Cordialement, HrisTo
Vous pouvez ajouter Titre, Sous-titre, corps et bien d'autres clés comme
{
"aps": {
"alert": {
"title": "Hey!???? Checkout my custom notification",
"subtitle": "Custom notification subtitle",
"body": "Description of custom notification"
},
"sound": "default",
"category": "CustomPush",
"badge": 1,
"mutable-content": 1
},
"Employee": {
"Name": "John Doe",
"Designation": "Manager"
}
}
Où Employé est une charge utile personnalisée où vous pouvez définir vos propres données selon les besoins
J'utilise la bibliothèque Push Sharp.
public static JObject CreatePayload(APNSNotification apnsNotification, object content, int Ntype)
{
var payload = new Dictionary<string, object>();
var aps = new Dictionary<string, object>();
if ((int)NotificationType.CONFERENCE == Ntype)
{
var confNotification = new ConferenceNotification();
confNotification = (ConferenceNotification)content;
aps.Add("alert", confNotification.title);
aps.Add("subtitle", confNotification.body);
aps.Add("badge", confNotification.badgeCount);
payload.Add("aps", aps);
payload.Add("confId", confNotification.confId);
payload.Add("pageFormat", confNotification.pageFormat);
payload.Add("pageTitle", confNotification.pageTitle);
payload.Add("webviewURL", confNotification.webview_URL);
payload.Add("notificationBlastID", confNotification.notificationBlastID);
payload.Add("dataValue", confNotification.dataValue);
payload.Add("pushtype", "Events");
}
else if ((int)NotificationType.NEWS == Ntype)
{
var newsNotification = new NewsNotification();
newsNotification = (NewsNotification)content;
aps.Add("alert", newsNotification.title);
aps.Add("subtitle", newsNotification.subtitle);
aps.Add("badge", newsNotification.badgeCount);
payload.Add("aps", aps);
payload.Add("articleId", newsNotification.articleId);
payload.Add("msgcnt", newsNotification.msgcnt);
payload.Add("type", newsNotification.type);
payload.Add("pushtype", "News");
}
return JObject.Parse(Newtonsoft.Json.JsonConvert.SerializeObject(payload));
}