J'ai créé une application de chat en utilisant XMPP cadre..quand j'ai quitter l'application(entrez le mode d'arrière-plan) je souhaite recevoir le message de chat..et aussi besoin d'afficher le badge sur l'icône...Comment puis-je faire cela?
OriginalL'auteur Raj | 2011-03-10
En effet, vous pouvez exécuter une XMPP basées sur un Cadre d'application en arrière-plan dans l'iOS4 en appelant à une application VoIP. (Cependant, Apple refusera à partir de l'App Store, à moins que cela aussi n'a vraiment VoIP).
Vous devez définir la VoIP drapeau dans votre application (nom)-info.fichier plist, puis dans
Vous aurez besoin de mettre de la socket stream indicateurs à inclure
kCFStreamNetworkServiceTypeVoIP
:Ensuite, votre application sera réveillé brièvement lorsqu'un nouveau message XMPP arrive. Dans le cours normal de votre
gestionnaire, vous souhaitez créer une notification locale pour le message si vous êtes backgrounded (vous pouvez garder une trace de fond de l'état via
UIApplicationDidEnterBackgroundNotification
etUIApplicationWillEnterForegroundNotification
). La notification locale gestionnaire peut définir l'application numéro de badge, etc (tout comme vous le feriez pour une notification push).MODIFIER
Des versions plus récentes de l'XMPP Cadre (en particulier, GCDAsyncSocket) prennent désormais en charge d'un appel à rendre cela plus facile, de sorte que vous pouvez juste avoir:
le contrôle n'est pas en train de "socketWillConnect:(AsyncSocket *)socket" la méthode. S'il vous plaît aider
Le contrôle doit aller à socketWillConnect: tant que vous avez appelé addDelegate: sur votre XMPPStream objet. Notez que le socketWillConenct: appel s'attend désormais à un GCDAsyncSocket* paramètre plutôt que AsyncSocket* (XMPPFramework 3)
Avez-vous une idée de comment puis-je mettre en œuvre les mêmes fonctionnalités sans utiliser la VOIP drapeau? Il serait très utile pour moi de résoudre mes problèmes..
Si j'ai de l'utilisateur VOIP ici,alors que l'application rejetée par Apple? Ou il aura été approuvé par Apple mentionné les lignes suivantes selon votre dit. CFReadStreamSetProperty([socket getCFReadStream], kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP); CFWriteStreamSetProperty([socket getCFWriteStream], kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP);
OriginalL'auteur Jeff Hay
Il y a un nombre limité de programmes qui fonctionnent en arrière-plan sans limite, VOIP programmes, ceux qui jouent de la musique, et ceux qui traquent la localisation de l'utilisateur. Si vous ne faites pas l'un de ces légitimement ensuite, vous êtes limité à dix minutes de l'opération en arrière-plan. Notez que Apple va rejeter les applications qui tentent idiot trucs comme jouer 'vide' sons de garder l'application en ligne.
Vous pouvez trouver les informations sur les tâches en cours d'exécution en arrière-plan ici:
http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html
Votre autre option, je suppose que c'est d'avoir le chat de fonctionnement du programme en communiquant avec un serveur, et que le serveur de file d'attente de réponses lorsque l'utilisateur est hors-ligne avant de les livrer lors de la prochaine ouverture de session. N'étant pas un net programmeur moi-même je ne sais pas comment est ce possible, mais je pense que c'est la seule façon de le faire indéfiniment, si vous êtes seulement offrir un chat. La meilleure option serait de rendre votre application VOIP activé à l'aide du guide ci-dessus.
MODIFIER de la version de l'iOS 5.0, il est également possible d'obtenir des applications enregistré comme Kiosque d'applications à télécharger de l'information, tandis que backgrounded, plus un tas d'autres funky caractéristiques qui sont également Kiosque à journaux.
-Ash
Je pense que vous avez écrémé-lire le document que je vous ai cité; vous devez faire plus que simplement ajouter de la VOIP pour l'info.plist pour le faire fonctionner. Regardez plus bas dans la page, sous "mise en Œuvre d'une Application VOIP"
Ma demande est définie comme une fonction de la Localisation de l'app, mais au bout de 3 heures dans le fond, il se déconnecte de mon serveur XMPP. En plus du réglage de l'info.plist que l'emplacement est-il autre chose à configurer dans la xmppframework de sorte à ne jamais se déconnecte?
Que je ne peux pas répondre pour certains, mais vous pouvez vous assurer de raisons pour lesquelles votre application est de le débrancher. Pourrait-il être de délai d'expiration du serveur? Pourrait-il y avoir un problème de mémoire qui est à l'origine de l'appareil pour mettre fin à votre application d'exécution?
OriginalL'auteur Ash
Dans la dernière XMPP Cadre vous n'avez pas besoin de modifier les fichiers du framework.
Viens de le faire:
1. Ajoutez ceci à votre méthode de connexion,
2. Ajouter voip clé pour votre info fichier plist:
OriginalL'auteur wzbozon