Il y a plusieurs choses que vous pouvez faire pour contrôler plus étroitement le timing de ces notifications. Je vais vous expliquer une approche et vous pouvez l'utiliser comme point de départ pour explorer plus loin par vous-même. Ces suggestions s'appliquent spécifiquement aux applications iOS. Une mise en garde est que ces suggestions se réfèrent à des API internes dans OFSDK 2.8 pour iOS et ne sont généralement pas recommandées pour une utilisation de haut niveau et sujettes à des changements dans les futures versions.
La première chose que je recommande est que vous construisiez l'exemple d'application avec votre propre clé de produit. Utilisez l'exemple d'application standard pour expérimenter avant d'appliquer le résultat à votre propre code.
Vous obtiendrez la réponse la plus rapide en séparant l'interface utilisateur de la fenêtre de notification du processus de soumission de la réussite. De cette façon, vous n'avez pas à vous soucier d'être enveloppé dans la logique pour décider si la soumission va juste à la base de données locale ou fait la confirmation complète sur une transaction réseau asynchrone.
Voir la déclaration de "showAchievementNotice" dans "OFNotification.h". En effectuant une recherche dans l'exemple d'application, vous verrez qu'il s'agit de l'API interne utilisée pour afficher la fenêtre contextuelle de réussite lorsqu'une réussite est obtenue. Il ne soumet pas réellement la réalisation. Vous pouvez appeler cette méthode directement comme elle est appelée depuis "OFAchievementService.mm" pour contrôler directement quand le message apparaît. Vous pouvez ensuite utiliser l'article suivant pour désactiver la fenêtre contextuelle d'être appelée lorsque la soumission réelle se produit:
http://support.openfeint.com/dev/notification-pop-ups-in-ios/
Cela vous donne une totale liberté d'appeler la soumission à une date ultérieure à condition de garder une trace de la nécessité de fais-le. Par exemple, vous pouvez sérialiser localement un drapeau pour prendre en charge la soumission réelle, soit après que le niveau est terminé ou au prochain démarrage de l'application. Ne pas oublier que l'utilisateur peut quitter une partie sans terminer proprement un niveau.