Je crée une application de menu de salle à manger d'université, dans laquelle je dois envoyer des notifications de poussée basées sur les menus quotidiens. À l'origine, j'avais l'intention de stocker des données utilisateur dans une base de données via Heroku et d'utiliser des tâches cron pour comparer les données de la base de données avec les menus quotidiens et envoyer les notifications appropriées aux utilisateurs. Après les nouvelles sur Cloudkit, cependant, j'ai pensé que je pourrais utiliser cela plutôt pour gérer la partie liée au serveur de mon code. Cependant, après une inspection plus approfondie, il semble que Cloudkit est actuellement capable de stocker les données, mais ne nous permet pas d'écrire du code côté serveur. Je me demande si j'ai interprété cette limitation correctement, ou si je peux, en fait, planifier une base de données sur CloudKit pour comparer ses données aux menus en ligne chaque jour et envoyer des notifications push appropriées.CloudKit pour envoyer des notifications push via des tâches cron?
Répondre
Il semble incroyable que vous ne seriez pas utiliser ou envisager Parse.com quelque chose comme ça ...
(Dans le cas contraire, d'autres Parse baas avec un ensemble de fonctionnalités similaires.)
NOTE - Parse est maintenant à back4app.com.
1) Parse est la meilleure façon possible de faire pousser avec une application iOS
2) l'idée de Parse est que vous avez le code nuage, et il est incroyablement simple,
https://parse.com/docs/cloud_code_guide
vous pouvez avoir des routines de code de nuage, et, vous pouvez avoir des routines "cron" qui se déclenchent régulièrement. C'est pourquoi tout le monde utilise Parse!
Notez qu'il est très facile d'appeler des "fonctions de cloud" à partir d'iOS, avec Parse.
Voici un exemple
-(void)tableView:(UITableView *)tableView
commitEditingStyle:(UITableViewCellEditingStyle)editingStyle
forRowAtIndexPath:(NSIndexPath *)indexPath
{
int thisRow = indexPath.row;
PFUser *delFriend = [self.theFriends objectAtIndex:thisRow];
NSLog(@"you wish to delete .. %@", [delFriend fullName]);
// note, this cloud call is happily is set and forget
// there's no return either way. life's like that sometimes
[PFCloud callFunctionInBackground:@"clientRequestFriendRemove"
withParameters:@{
@"removeThisFriendId":delFriend.objectId
}
block:^(NSString *serverResult, NSError *error)
{
if (!error)
{
NSLog(@"ok, Return (string) %@", serverResult);
}
}];
[self back]; // that simple
}
Avis J'appelle une fonction nuage "clientRequestFriendRemove". Donc, c'est juste un morceau de code nuage je l'ai écrit et qui est sur notre compte Parse, en fait, ici, il est
Parse.Cloud.define("clientRequestHandleInvite", function(request, response)
{
// called from the client, to accept an invite from invitorPerson
var thisUserObj = request.user;
var invitorPersonId = request.params.invitorPersonId;
var theMode = request.params.theMode;
// theMode is likely "accept" or "ignore"
console.log("clientRequestAcceptInvite called.... invitorPersonId " + invitorPersonId + " By user: " + thisUserObj.id);
console.log("clientRequestAcceptInvite called.... theMode is " + theMode);
if (invitorPersonId == undefined || invitorPersonId == "")
{
response.error("Problem in clientRequestAcceptInvite, 'invitorPersonId' missing or blank?");
return;
}
var query = new Parse.Query(Parse.User);
query.get(
invitorPersonId,
{
success: function(theInvitorPersonObject)
{
console.log("clientRequestFriendRemove ... internal I got the userObj ...('no response' mode)");
if (theMode == "accept")
{
createOneNewHaf(thisUserObj, theInvitorPersonObject);
createOneNewHaf(theInvitorPersonObject, thisUserObj);
}
// in both cases "accept" or "ignore", delete the invite in question:
// and on top of that you have to do it both ways
deleteFromInvites(theInvitorPersonObject, thisUserObj);
deleteFromInvites(thisUserObj, theInvitorPersonObject);
// (those further functions exist in the cloud code)
// for now we'll just go with the trick of LETTING THOSE RUN
// so DO NOT this ........... response.success("removal attempt underway");
// it's a huge problem with Parse that (so far, 2014) is poorly handled:
// READ THIS:
// parse.com/questions/can-i-use-a-cloud-code-function-within-another-cloud-code-function
},
error: function(object,error)
{
console.log("clientRequestAcceptInvite ... internal unusual failure: " + error.code + " " + error.message);
response.error("Problem, internal problem?");
return;
}
}
);
}
);
(exemples Fuller ... https://stackoverflow.com/a/24010828/294884)
3) il est trivial de faire pousser passer du code nuage en Parse, encore une fois c'est pourquoi « tout le monde l'utilise »
Par exemple, voici un fragment de code nuage Parse qui se rapporte Push ...
function runAPush(ownerQueryForPush, description)
// literally run a push, given an ownerQuery
// (could be 1 to millions of devices pushed to)
{
var pushQuery = new Parse.Query(Parse.Installation);
pushQuery.matchesQuery('owner', ownerQueryForPush);
Parse.Push.send
(
{
where: pushQuery,
data:
{
swmsg: "reload",
alert: description,
badge: "Increment",
title: "YourClient"
}
},
{
success: function()
{ console.log("did send push w txt message, to all..."); },
error: function(error)
{ console.log("problem! sending the push"); }
}
);
}
4) il est incroyablement facile de faire tout ce qui concerne votre base de données de nourriture, dans un environnement nosql. rien ne pouvait être plus facile que gratuitement (pour l'ajout d'aliments, peu importe) l'approche Parse
5), vous obtenez l'arrière tout - normalement des mois de travail
6) enfin je suppose que Parse est tout à fait libre (Donc, je ne peux pas m'imaginer faire ce que vous dites d'une autre façon - ce serait un cauchemar dans le cas contraire. J'espère que ça aide
côté serveur
Comme vous avez dit CloudKit ne permet pas de code côté serveur.
Mais .. Bienvenue sur
Abonnements
Abonnements concept est que le client enregistre des mises à jour spécifiques. Vous pouvez par exemple créer un type d'enregistrement appelé Daily
et inviter les utilisateurs à s'y inscrire. Vous devriez vérifier les vidéos Apple documentation et WWDC14 (même si les abonnements ne sont pas détaillés, c'est un bon point de départ). La bonne chose est que les notifications push sont liées au concept d'abonnement. Donc, fondamentalement, vous dites: Envoyez-moi une notification pour chaque nouveau CKRecord
de type Daily
ajouté.
Crons
Maintenant, le problème est que vos utilisateurs sont des registres à de nouveaux messages, mais vous ne voulez pas de se connecter au quotidien Tableau de bord iCloud afin d'effectuer la poussée en ajoutant un enregistrement. Une solution ici est de coder une application sur un serveur mac (je suppose que mac mini comme serveur deviendra plus populaire avec CloudKit) qui ajoute un nouveau Daily
CKRecord
tous les jours.
Limites
Le problème est AFAIK le message de notification est écrit sur le côté client, il ne dépend pas de données que vous envoyez.
Comme vous l'avez mentionné, ils n'ont pas encore publié toutes les informations à ce sujet. Savez-vous quand nous aurions un accès complet à ces fonctionnalités? – Mahir
"Comme vous l'avez dit, CloudKit n'autorise pas le code côté serveur ...." c'est exactement pourquoi Parse est Parse .... – Fattie
"Savez-vous quand nous aurions un accès complet à ces fonctionnalités?" mahir, il est inconcevable que vous attendiez que CloudKit fasse un travail comme celui-ci qui est "fait pour un bAAs" - il suffit de choisir votre poison, Parse, Firebase, Applase, Buddy ou autre. Il y a des milliers d'articles sur "Quels bAAs devrais-je choisir?!" par exemple. http://www.developereconomics.com/backend-as-a-service-shootout-the-best-alternatives-to-parse/ – Fattie
- 1. Envoyer des notifications push dynamiquement avec parse.com
- 2. Comment envoyer des notifications push individuelles via une application iphone?
- 3. comment envoyer des notifications push à plusieurs utilisateurs via php
- 4. Envoyer des notifications push utilisateur à utilisateur
- 5. envoyer des notifications push sur azur
- 6. Planification des notifications push via une interface utilisateur Web
- 7. Chrome Push Notifications: envoyer push invisible
- 8. git push via cron
- 9. Comment utiliser l'exemple PushMeBaby pour envoyer des notifications push Apple?
- 10. Comment mettre en œuvre XMPP pour envoyer des notifications push
- 11. Détection des notifications push
- 12. Affichage des notifications push
- 13. Gestion des notifications push
- 14. ordonnancement des tâches Cron
- 15. Envoyer Notifications Universal Push - Xcode
- 16. Envoyer les notifications push via sujet à tous les appareils
- 17. Envoyer des notifications à JavaScript
- 18. envoyer des notifications push automatiques dans l'application du service Web
- 19. Comment envoyer des notifications push à certains utilisateurs pas tous?
- 20. Envoyer des notifications push à tous les périphériques du serveur
- 21. notifications push iphone envoyer au hasard
- 22. Comment envoyer des notifications push en utilisant UDID en PHP
- 23. Envoyer des notifications push personnalisées à mon application?
- 24. Affichage des notifications push Blackberry
- 25. Numéro alternatif des tâches cron
- 26. Un seul développeur reçoit des notifications push
- 27. App pour les notifications push
- 28. WP8 - Agent de tâches planifiées pour les notifications push
- 29. PHP push-notifications
- 30. Notifications push pour iPhone
Juste pour vérifier, je serais en mesure de récupérer des données sur une page Web et de les stocker dans le nuage avec juste le code backend, non? – Mahir
Oui, je suis sûr que ce serait possible. Donc, ici https://parse.com/docs/cloud_code_guide#networking, il explique précisément comment vous pouvez obtenir une page sur Internet. notez aussi que vous pouvez écrire des webhooks, pour que "d'autres serveurs puissent vous appeler" ... https://parse.com/docs/cloud_code_guide#webhooks Je suggère (a) de consulter cette documentation (b) n'hésitez pas à poser une nouvelle question comme "puis-je faire cela avec analyse" car il y a beaucoup d'ingénieurs d'analyse sur ce site – Fattie