Nous construisons une application qui utilise le dernier SDK Facebook iOS (3.15) pour iOS 7 sur Xcode 5. Il y a un produit web associé, et nous utilisons 3 environnements pour le déploiement: production, mise en scène et développement. Nous avons une application Facebook distincte pour chacun de ces environnements, qui est bien documentée et fonctionne bien sur le web. Toutefois, le SDK iOS de Facebook nécessite de spécifier FacebookAppID
, FacebookDisplayName
et URL Schemes
dans notre fichier Info.plist
. Notre application mobile est également configurée avec les 3 environnements, en utilisant une configuration différente pour chaque environnement. Je n'ai pas réussi à faire en sorte que le SDK Facebook fonctionne correctement avec les valeurs spécifiques à la configuration dans notre fichier Info.plist
. Quelqu'un peut-il m'aider dans la bonne direction pour configurer plusieurs environnements d'applications iOS avec plusieurs applications Facebook?Facebook iOS SDK: Plusieurs applications Facebook pour différents environnements
Répondre
Vous pouvez ajouter target
à votre projet, sélectionnez OS X
>Other
>External Build System
et utiliser /usr/bin/python
comme outil de construction. Puis, dans Paramètres de construction, ajoutez le paramètre défini par l'utilisateur FB_APP_ID
et définissez les ID de vos applications pour différentes configurations de construction (Debug
/Release
/etc).
Dans l'onglet Info, dans le champ Arguments
entrez les informations suivantes
fbupdate.py $(FB_APP_ID)
Voici le script fbupdate.py
:
# coding: utf-8
import os
import sys
from lxml.etree import tostring, parse
if __name__ == '__main__':
fb_app_id = None
new_fb_app_id = sys.argv[1]
filename = os.path.join(os.path.dirname(__file__), '..', 'TargetName', 'Info.plist')
tree = parse(filename)
for el in tree.xpath('//plist/dict/key[text()="FacebookAppID"]'):
value_el = el.getnext()
fb_app_id = value_el.text
value_el.text = new_fb_app_id
break
for el in tree.xpath('//array/string[text()="fb{fb_app_id}"]'.format(
fb_app_id=fb_app_id)):
el.text = 'fb' + new_fb_app_id
break
with open(filename, 'w') as f:
f.write(tostring(tree, encoding='UTF-8', xml_declaration=True).encode('utf8'))
print('FB App ID update done.')
J'utilise le dossier Scripts
dans le dossier racine de mon projet, je spécifiez-le dans le champ Répertoire. Si vous avez un emplacement différent, n'oubliez pas de changer le script pour ouvrir le bon fichier Info.plist
. Aussi, vous devrez remplacer TargetName
dans le script à votre cible d'origine. Puis, accédez à vos paramètres cible d'origine et dans le Build Phases
ajoutez les dépendances cibles à cette nouvelle cible External Build System
créée.
Maintenant, ce script python se déroulera avant la construction de votre objectif initial et de mettre le bon Facebook ID App à l'Info.plist
et il sera qu'une pièce d'identité dont vous avez besoin dans la configuration de votre version actuelle.
P.S. Vous devrez peut-être exécuter pip install lxml
à partir du terminal et/ou installer d'autres dépendances pour que ce script s'exécute sur votre machine
P.P.S. Je sais qu'il peut être trop tard pour la question originale, mais cela peut être utile pour d'autres
J'ai utilisé une stratégie différente de celle d'Azat, qui a fonctionné pour iOS 7/8 et Facebook iOS SDK v3.21. Parce que j'avais plusieurs paramètres au-delà de Facebook qui étaient spécifiques à l'environnement, j'ai créé un Singleton générique pour gérer les configurations d'environnement. Voici les étapes:
1. Créer des configurations pour App
Accédez à votre Paramètres du projet, onglet Info, et de créer des configurations pour chaque environnement différent.J'ai personnellement utilisé Development
, Staging
, Release
et Debug
(les deux derniers pour l'environnement de production).
2. Expose Nom de la configuration dans Info.plist
Dans le fichier Info.plist
de votre application, créez une clé appelée Configuration
et définissez la valeur à ${CONFIGURATION}
.
3. Construire Singleton à manipuler l'environnement Configuration
Le code complet se trouve dans this gist, mais voici l'essentiel (sans jeu de mots) de celui-ci. Vous allez créer une liste de propriétés supplémentaire Environments.plist
avec une clé pour chaque configuration dont la valeur est un dictionnaire contenant tous vos paramètres spécifiques à l'environnement. Ensuite, vous allez construire une classe Environment
qui aura une instance singleton à travers laquelle vous pouvez exposer ces paramètres. Essentiellement, vous pouvez appeler [[Environment sharedInstance] facebookAppId]
de n'importe où dans votre application que vous avez importé Environment.h
, ce que nous ferons à l'étape suivante.
4. choisir Explicitement Facebook et appId Sélectionnez dans votre délégué App
Dans votre méthode de application:didFinishLaunchingWithOptions
AppDelegate.m
, les premières lignes doivent lire:
[FBSettings setDefaultAppID:[[Environment sharedInstance] facebookAppId]];
[FBSettings setDefaultDisplayName:[[Environment sharedInstance] facebookDisplayName]];
5. Ajouter URL Facebook Schémas à Info.plist
Dans votre Info.plist
, vous devrez ajouter l'URL Schémas pour chaque application Facebook que vous utilisez pour tous vos environnements. Voir les instructions here, mais au lieu de seulement 1 élément sous URL Schemes
, vous aurez 1 pour chaque environnement.
6. Choisissez Configuration dans le schéma
Pour exécuter en utilisant une certaine configuration, modifier votre schéma (⌘+<
raccourci sur Mac) et choisissez votre configuration. Pour rendre plus facile de ne pas avoir à éditer chaque fois que je courais, j'ai créé un schéma pour chacun de mes environnements avec la bonne configuration déjà choisie pour Run, Test, Profile et Archive.
Ce dernier a été testé sur iOS 8 et Facebook iOS SDK v3.21, mais j'espère que la stratégie générale ici peut demander à iOS 9 et les versions ultérieures du SDK iOS Facebook. J'espère que cela t'aides!
- 1. API Facebook pour différents environnements
- 2. OAuth2, Facebook (plusieurs environnements, localhost, azure)
- 3. Facebook ios sdk language
- 4. Facebook SDK iOS
- 5. Facebook SDK sur iOS
- 6. FaceBook IOS SDK - GitHub
- 7. facebook-ios-SDK question
- 8. Facebook SDK et iOS
- 9. Aide Facebook, iOS SDK
- 10. Facebook Intégration iOS SDK (Facebook Connect)?
- 11. iOS Facebook SDK - Meilleures pratiques?
- 12. Autorisations pour Facebook SDK pour iOS
- 13. Authentification Facebook avec le nouveau 'Facebook SDK pour iOS' vs. 'Facebook iPhone SDK'
- 14. facebook-ios-sdk se déconnecter
- 15. Facebook SDK IOS 3.1 - reauthorizeWithPublishPermissions?
- 16. Facebook iOS SDK 3.0 réautorisation
- 17. Facebook iOS SDK redémarre l'application
- 18. Facebook iOS SDK trop lent
- 19. Facebook iOS SDK: exception ATS
- 20. Facebook iOS SDK - Délégué personnalisé
- 21. Facebook SDK sur iOS Simulator
- 22. Compression d'image pour Facebook iOS SDK
- 23. Facebook iOS SDK et unicode
- 24. exception étrange Facebook iOS sdk
- 25. réponse Parsing Facebook iOS sdk
- 26. Facebook iOS SDK 'autorisation unique'
- 27. Aide avec facebook ios sdk
- 28. iOS Facebook SDK - Quelques infos
- 29. iOS Facebook SDK SDO Safari se déconnecter
- 30. Facebook iOS SDK: currentFeedDialogModallyWithSession se bloque
avez-vous résolu ceci? – Esqarrouth
@Esq J'ai récemment fait face au même problème, veuillez vérifier ma réponse ci-dessous – Azat
@Esq Je viens de poster ma réponse en utilisant une stratégie différente de celle d'Azat. Vérifiez ci-dessous, désolé pour le retard et espérons que cela aide. – hunteros