对不同的构buildscheme使用不同的GoogleService-Info.plist
我正在使用一个构buildschemeprod和一个分段(与2个不同的包标识符),我试图为每个scheme使用一个单独的GoogleService-Info.plist。 有什么办法可以手动selectplist文件来初始化GCM(和goolelogin)? 还是有可能避免使用plist并手动进行设置?
谢谢!
@inidona的答案为我工作。 我把它转换成Swift后
对于Swift 2.3:
let filePath = NSBundle.mainBundle().pathForResource("GoogleService-Info", ofType: "plist") let options = FIROptions(contentsOfFile: filePath) FIRApp.configureWithOptions(options)
对于Swift 3.0:
let filePath = Bundle.main.path(forResource: "GoogleService-Info", ofType: "plist")! let options = FIROptions(contentsOfFile: filePath) FIRApp.configure(with: options)
我想你可以用这种方式来dynamicconfiguration你的GoogleService-Info.plist,并为不同的包标识符使用不同的名称。
ciao安德烈亚斯
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"GoogleService-Info" ofType:@"plist"]; FIROptions *options = [[FIROptions alloc] initWithContentsOfFile:filePath]; [FIRApp configureWithOptions:options];
选项1:不同的文件名
#ifdef DEBUG NSLog(@"[FIREBASE] Development mode."); filePath = [[NSBundle mainBundle] pathForResource:@"GoogleService-Info-Debug" ofType:@"plist"]; #else NSLog(@"[FIREBASE] Production mode."); filePath = [[NSBundle mainBundle] pathForResource:@"GoogleService-Info-Production" ofType:@"plist"]; #endif FIROptions *options = [[FIROptions alloc] initWithContentsOfFile:filePath]; [FIRApp configureWithOptions:options];
选项2:不同的文件夹
#ifdef DEBUG NSLog(@"[FIREBASE] Development mode."); filePath = [[NSBundle mainBundle] pathForResource:@"GoogleService-Info" ofType:@"plist" inDirectory:@"Debug"]; #else NSLog(@"[FIREBASE] Production mode."); filePath = [[NSBundle mainBundle] pathForResource:@"GoogleService-Info" ofType:@"plist" inDirectory:@"Release"]; #endif FIROptions *options = [[FIROptions alloc] initWithContentsOfFile:filePath]; [FIRApp configureWithOptions:options];
不要忘记将文件/文件夹添加到项目目标>构build阶段>复制包资源:
我认为不使用GoogleService-Info.plist.
就无法实现GoogleService-Info.plist.
因为在开始将您的iOS应用程序与Google Sign-In组件集成之前,您必须下载依赖项并configuration您的Xcode项目。 而这个过程显示GoogleService-Info.plist
有一个很大的因素。
所以这个SO问题的解决scheme和想法可以帮助你解决你的问题。 刚将GoogleService-Info plist
的主要副本移出应用程序到2个单独的文件夹中,然后使用每个目标上的“构build阶段”“复制文件”将目标特定的plist导入到资源文件夹中。
也检查这个SO问题 ,它可能会给你更多的信息/想法你的问题。
这里是如何在Xamarin C#中完成的:
string plistPath = NSBundle.MainBundle.PathForResource ("GoogleService-Info", "plist"); Options options = new Options (plistPath); App.Configure (options);
请记住包含Firebase名称空间:
using Firebase.Analytics;
这是我的解决scheme!
NSString *filePath; if([self isProduction]){ filePath = [[NSBundle mainBundle] pathForResource:@"GoogleService-Info" ofType:@"plist"]; }else{ filePath = [[NSBundle mainBundle] pathForResource:@"GoogleService-Info-Sandbox" ofType:@"plist"]; } FIROptions *options = [[FIROptions alloc] initWithContentsOfFile:filePath]; [FIRApp configureWithOptions:options];
就是这样!