Eli*_*Eli 9 ios cocoapods firebase swift today-extension
我需要能够在Today View Extension中使用Firebase,但我似乎无法导入Firebase模块.我想这是因为我需要在我的可可豆荚文件中有一个新目标,但我不知道如何做到这一点.
谢谢.
Cha*_*ris 12
你必须将今天的扩展视为自己独立的应用程序(有点)
在您的firebase项目仪表板中,您需要点击"添加另一个应用程序"按钮.
选择iOS,然后输入您今日扩展的BUNDLE ID
完成向导并下载生成的GoogleService-Info.plist文件
将plist文件添加到Today Extension的根文件夹中
转到您的xcode项目,并手动将FirebaseCore.framework和FirebaseDatabase.framework添加到Today Extension
终于在今天今天的viewcontroller调用FirebaseApp.configure()
import FirebaseDatabase
import FirebaseCore
override func viewDidLoad() {
super.viewDidLoad()
FirebaseApp.configure()
}
Run Code Online (Sandbox Code Playgroud)
或无需在Firebase控制台上添加额外的应用程序,只需GoogleService-Info.plist稍作修改即可重用您的主项目(请参见下文)。启动时,必须在两个应用程序中以任何一种方式配置Firebase应用程序单例。
要同步扩展程序和包含的应用程序,请参阅《App Extension编程指南:处理常见场景》或此reddit注释。该Stackoverflow线程专门描述了这种情况。
步骤:
GoogleService-Info.plist到Xcode的扩展程序中GoogleService-Info.plistXcode拖到您的共享扩展名中,然后Podfilepod install)GoogleService-Info.plist到Xcode的扩展程序中GoogleService-Info.plistXcode拖到您的共享扩展名中,然后对我们而言,主要(即包含应用程序)是Access News,扩展名是Access-News-Uploader。
Podfile# ...
target 'name-of-your-extension' do
use_frameworks!
pod 'Firebase/Core'
pod 'Firebase/Auth'
# etc.
end
Run Code Online (Sandbox Code Playgroud)
pod install)/* 1. Import Firebase */
/**********************/
import Firebase
/**********************/
class WhereverInYourExtension: WhateverController {
// ...
override func viewDidLoad() {
super.viewDidLoad()
/* 2. Configure Firebase */
/*************************/
if FirebaseApp.app() == nil {
FirebaseApp.configure()
}
/*************************/
// ...
}
Run Code Online (Sandbox Code Playgroud)
1)仍然无法导入Firebase!
确保为项目中的所有目标安装了Pod。为此inherit!或abstract_target在您的Podfile中使用。
用最简单的例子abstract_target,从官方文档:
abstract_target 'Networking' do
pod 'AlamoFire'
target 'Networking App 1'
target 'Networking App 2'
end
Run Code Online (Sandbox Code Playgroud)
对于inherit!,请参阅此SO问答。
2)如何在现有应用程序上做到这一点而又不搞乱呢?
删除Podfile,Podfile.lock然后YourProject.xcworkspace
发行pod init,它将一一列出您现有的目标。
Podfile通过分组abstract_target或使用来编辑inherit!
问题 pod install
YourProject.xcworkspace将生成一个新文件,如果使用此文件打开您的项目,则在General> 下Linked Frameworks and Libraries将显示已添加Firebase,并且可以从项目文件中将其导入。
(有关需要使用此清理方法的具体示例,请参见此SO线程。)
3)
firebase 'sharedApplication' is unavailable: not available on iOS (App Extension) - Use view controller based solutions where appropriate instead.
这对我有用:
通过克隆来自Github的项目存储库,清除了所有内容,
已删除
问题pod init在控制台上
重新创建Podfile(基本上是复制粘贴)
问题pod update在控制台上
(可能下次无法使用。)