Quel code puis-je utiliser dans une application iPhone pour obtenir et définir les paramètres d'une autre application que j'ai écrite? (de préférence en utilisant NSUserDefaults)Comment utiliser les paramètres d'une autre application
Répondre
Vous ne pouvez simplement pas faire cela. Chaque application est installée dans son propre dossier et reçoit son propre identifiant utilisateur unique. Le fichier contenant ces paramètres se trouve dans le dossier de l'autre application et ses autorisations sont définies sur celle de l'autre application. La seule façon d'accéder aux données est d'utiliser le même identifiant d'application que l'autre application, auquel cas l'installation de votre application écraserait l'ancienne application.
EDIT:
Cette solution a été donnée lorsque la question demandait de le faire en utilisant NSUserDefaults, en particulier. Pour la question mise à jour, l'approche de trousseau ou l'approche de serveur fournie sont raisonnables.
Vous ne serez pas en mesure de retirer cela avec NSUserDefaults. Le Keychain, bien que quelque peu encombrant dans son C-ness et beaucoup plus limité que l'API NSUserDefaults, pourrait vous permettre d'accomplir ceci. Si vous pouvez sérialiser ce que vous avez besoin de partager entre vos applications dans quelques chaînes, il pourrait être utile d'essayer.
De iPhone OS 3.x Release Notes:
Il est maintenant possible pour vous de partager des éléments du trousseau entre plusieurs applications que vous créez. Le partage d'éléments facilite l'interopérabilité des applications de la même suite. Par exemple, vous pouvez utiliser cette fonction pour partager des mots de passe d'utilisateur ou d'autres éléments qui pourraient vous obliger à inviter l'utilisateur de chaque application séparément. Le partage d'éléments de trousseau implique la définition des droits appropriés dans les fichiers binaires de votre application. En utilisant Xcode, vous devez créer un fichier de liste de propriétés Entitlements qui inclut les droits pris en charge pour votre application. Le processus de création de ce fichier est décrit dans le Guide de développement de l'iPhone. Pour plus d'informations sur les droits que vous pouvez configurer, voir la description de la fonction SecItemAdd dans Keychain Services Reference.
L'accès aux éléments partagés lors de l'exécution implique l'utilisation de l'interface de programmation Keychain Services avec les groupes d'accès que vous avez définis au cours du développement. Pour plus d'informations sur l'accès au trousseau, voir le Guide de programmation des services de trousseau.
Voici Buzz Anderson's Simple iPhone Keychain Code. Vous pouvez l'utiliser pour stocker des paires clé/valeur sous forme de chaînes dans le trousseau. Ce n'est pas beaucoup, mais peut-être mieux que rien. Voir Apple's Keychain Programming Guide pour plus.
Vous pouvez avoir une application envoyer les données à votre serveur, puis l'autre application peut obtenir les données de votre serveur.
Vous ne pouvez pas faire cela en utilisant NSUserDefaults mais cela peut être fait.
Vous pouvez utiliser un presse-papiers partagé. Ce ne serait pas sécurisé, mais les deux applications pourraient lire et écrire à partir du même presse-papiers. Vous avez juste besoin de créer un UIPasteboard spécifique à l'application. Consultez la référence de classe UIPasteboard sur le site de développement d'Apple pour plus d'informations.
--Mike
Vous devriez vraiment jeter un oeil à UIPasteboard, comme l'a suggéré - vous pouvez créer une nouvelle table de montage pour une utilisation par les applications que vous créez (bien que rien ne l'arrêtera d'autres applications de les utiliser, mais les gens sont échec improbable à). Un UIPasteboard est persistant via un cycle d'alimentation/redémarrage - il existera jusqu'à ce que l'application de création soit supprimée.
Vous pouvez également jeter un oeil à la libary de SwapKit (qui a l'air très cool):
Pour être plus précis: vous pouvez poster un "manifeste" (enregistrement de l'application) via SwapKit que toutes les autres applications SwapKit peuvent voir. Il s'agit généralement d'un dictionnaire statique contenant des éléments tels que des liaisons de type à application, mais vous pouvez ajouter vos clés personnalisées si longtemps qu'elles ne commencent pas par "ILApp". (Utilisez [ILSwapService registerWithAttributes: (dict) update: YES] pour modifier par programme). ~ l'auteur de SwapKit. – millenomi
... (et [ILSwapService registrationForApplicationWithIdentifier:] à lire .Documents API: http://infinite-labs.net/swapkit/docs/api/interface_i_l_swap_service.html) – millenomi
Cliquez sur le tag "de NSUserDefaults" vous avez ajouté à voir plusieurs réponses, comme http: // stackoverflow. com/questions/1868788/can-other-programs-read-my-nsuserdefaults-settings – cdespinosa