gpt4 book ai didi

ios - FirebaseFirestore 可以在 iOS 应用扩展中使用吗?

转载 作者:行者123 更新时间:2023-11-29 05:15:31 25 4
gpt4 key购买 nike

我正在尝试在 Swift iOS 应用扩展中使用 Firestore

Firestore 在主应用中工作正常,但 Firestore.firestore() 在应用扩展中返回 nil

当我在调试器中单步调试时,我发现 Firestore 不是已注册的组件

主应用:

- (nullable id)instanceForProtocol:(Protocol *)protocol {

self FIRComponentContainer * 0x28359e1f0 0x000000028359e1f0
_app FIRApp * 0x28359e250 0x000000028359e250
_components __NSDictionaryM * 5 key/value pairs 0x0000000283bdc2c0
[0] (null) @"FIRInstanceIDInstanceProvider" : (no summary)
[1] (null) @"FSTFirestoreMultiDBProvider" : (no summary)
[2] (null) @"FIRAnalyticsInterop" : (no summary)
[3] (null) @"FIRAuthInterop" : (no summary)
[4] (null) @"FIRMessagingInstanceProvider" : (no summary)
_cachedInstances __NSDictionaryM * 3 key/value pairs 0x0000000283bdc2e0
_eagerProtocolsToInstantiate NSMutableArray * nil 0x0000000000000000
protocol Protocol * 0x1056645e8 0x00000001056645e8
protocolName __NSCFString * @"FSTFirestoreMultiDBProvider" 0x000000028359b3c0
cachedInstance id 0x0 0x0000000000000000
creationBlock FIRComponentCreationBlock 0x000000010507eb40

扩展名:

self    FIRComponentContainer * 0x11fd07ae0 0x000000011fd07ae0
NSObject NSObject
_app FIRApp * 0x11fd0dd50 0x000000011fd0dd50
_components __NSDictionaryM * 1 key/value pair 0x000000011fd2a150
[0] (null) @"FIRAuthInterop" : (no summary)
_cachedInstances __NSDictionaryM * 1 key/value pair 0x000000011fd2ac20
_eagerProtocolsToInstantiate NSMutableArray * nil 0x0000000000000000
protocol Protocol * 0x1050ce0e8 0x00000001050ce0e8
protocolName __NSCFString * @"FSTFirestoreMultiDBProvider" 0x000000011fe0e540
cachedInstance id 0x0 0x0000000000000000
creationBlock FIRComponentCreationBlock (null)

来自Podfile.lock

  • FirebaseFirestore (1.8.1):
  • FirebaseFirestoreSwift (0.2):

我确保 FirebaseApp.configure() 在 Firestore.firestore() 之前调用

我还在扩展目标的其他链接器标志中添加了 -ObjC,以及扩展 Pods/Target\Support\Files/Pods*/.xcconfig 中的 OTHER_LDFLAGS

如果 iOS 应用扩展不支持 Firestore,由于 Auth 似乎在扩展中工作,是否可以使用 Firestore REST 调用?

最佳答案

解决了我自己的问题:

我将“其他链接器标志”从主目标复制到扩展目标。在扩展目标的“其他链接器标志”中,我删除了以下内容:

$(inherited)
-framework "FirebaseMessaging"
-framework "protobuf"

这解决了问题。

然后,我将扩展目标的“其他链接器标志”更改为“$(继承),这似乎也有效。

Firestore 似乎没有初始化并注册到 Firebase(即使代码以某种方式链接进来,因为我能够在调试器中单步执行它)

Google 开发人员:如果这样做的话,这会更容易发现

- (nullable id)instanceForProtocol:(Protocol *)protocol {

当找不到协议(protocol)时记录了错误或抛出异常,而不是仅仅返回 nil

Firestore 未包含在扩展的“其他链接器标志”中。这可能是由于我最初设置 Podfile 的方式所致

初始 Podfile:

target 'XXX' do
use_frameworks!

pod 'Firebase/Core'
pod 'Firebase/Messaging'
pod 'Firebase/Firestore'
pod 'FirebaseFirestoreSwift'
pod 'Firebase/Auth'

target 'XXXExtension' do
inherit! :search_paths
end

end

新 Podfile:

target 'XXX' do
use_frameworks!

pod 'Firebase/Core'
pod 'Firebase/Messaging'
pod 'Firebase/Firestore'
pod 'FirebaseFirestoreSwift'
pod 'Firebase/Auth'

end

target 'XXXExtension' do
use_frameworks!

pod 'Firebase/Core'
pod 'Firebase/Firestore'
pod 'FirebaseFirestoreSwift'
pod 'Firebase/Auth'

end

关于ios - FirebaseFirestore 可以在 iOS 应用扩展中使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59227835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com