我正在尝试重新创建一个新的firebase项目,其中使用来自firebase实时数据库的数据填充表视图,该数据包含指向firebase存储中图像的链接.
我可以填充教程项目,该项目是带有firebase数据的表视图.但是对于我当前的项目,它是扩展中的集合视图.
我已经把问题缩小到我的变量
var ref: FIRDatabaseReference!
var messages: [FIRDataSnapshot]! = []
var msglength: NSNumber = 10
private var _refHandle: FIRDatabaseHandle!
Run Code Online (Sandbox Code Playgroud)
特别
var messages: [FIRDataSnapshot]! = []
Run Code Online (Sandbox Code Playgroud)
我认为这是我从firebase获得的数据数组
然后我调用一个函数,该函数应该在我的viewdidload()中填充该数组
func loadPosts(){
self.messages.removeAll()
// Listen for new messages in the Firebase database
_refHandle = self.ref.child("messages").observeEventType(.ChildAdded, withBlock: { (snapshot) -> Void in
//print("1")
self.messages.append(snapshot)
//print(self.messages.count)
})
}
Run Code Online (Sandbox Code Playgroud)
当我尝试填充我的集合视图时会出现问题,因为我想要水平滚动我使用扩展名.在扩展中,我发现我的值数组总是0,但在我的loadPosts()函数中,my>数组的计数值与我在firebase中的帖子数量相同.
extension HomeViewController : UICollectionViewDataSource
{
func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
return 1
}
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return messages.count …Run Code Online (Sandbox Code Playgroud) ios firebase swift firebase-realtime-database firebase-storage
我目前正在实现 firebase 电话身份验证,并且可以使用 firebase UI 成功实现电话身份验证而无需 swizzling,但从我的研究来看,似乎在不使用 swizzling 的情况下实现 firebase 电话身份验证需要用户允许通知。我知道 firebase 发送了一个不需要通过允许通知来批准的静默通知,但似乎获得该通知的唯一方法是要求用户允许通知。有谁知道如何或是否有可能在不混乱和不要求用户通知权限的情况下做到这一点?
我已添加将通知证书推送到 firebase,并添加了 firebase 电话 ui 文档中列出的所有需要的功能。
在不要求用户允许通知的情况下,电话身份验证文档中列出的此功能不会被调用(用户还必须选择允许)
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
// Pass device token to auth
Auth.auth().setAPNSToken(deviceToken, type: AuthAPNSTokenTypeProd)
// Further handling of the device token if needed by the app
// ...
}
Run Code Online (Sandbox Code Playgroud)
如果未调用此函数,则未设置 setAPNSToken,我将不会收到继续进行电话身份验证的静默通知,并且会收到一般错误
身份验证错误:您项目的 Firebase 电话号码身份验证设置似乎有问题,请务必按照https://firebase.google.com/docs/auth/ios/phone-auth 上的说明进行操作
我目前正在尝试从github使用firebase存储的快速启动示例.只需上载图像,然后在加载视图后将其下载到另一个视图.我可以将图像上传到存储中,但是当我尝试下载图像时会发生此错误.
错误域= FIRStorageErrorDomain代码= -13000"发生未知错误,>请检查服务器响应." UserInfo = {bucket =****.appspot.com,> object = 379f921d-a0bb-44b5-b04e-f21cc7953848/485423329797/IMG_0003.JPG,ResponseErrorDomain = NSCocoaErrorDomain,NSDestinationFilePath =/file:/ Users/mark******/Library/Developer/CoreSim> ulator/Devices/B600E8B9-95ED-4963-8282-9CDD43B7C25D/data/Containers/Data/Application/8FFB7EB0-0AFD-4E10-AAB6-D7340F8E3DDB/Documents/myimage.jpg,NSLocalizedDescription = An发生未知错误,请检查服务器响应.,NSUserStringVariant =(Move),NSSourceFilePathErrorKey =/Users/mark******/Library/Developer/CoreSimula> tor/Devices/B600E8B9-95ED-4963-8282-> 9CDD43B7C25D /data/Containers/Data/Application/8FFB7EB0-0AFD-4E10-AAB6->D7340F8E3DDB/tmp/CFNetworkDownload_5ZmlMp.tmp,NSFilePath =/Users/mark******/Library/Developer/CoreSimulator/Devices/B6> 00E8B9 -95ED-4963-8282-> 9CDD43B7C25D/data/Containers/Data/Application/8FFB7EB0-0AFD-4E10-AAB6-> D7340F8E3DDB/tmp/CFNetworkDownload_5ZmlMp.tmp,NSUnderlyingError = 0x7f8036a682d0 {Error Domain = NSPOSIXErrorDomain Code = 2>"No suc h文件或目录"},ResponseErrorCode = 4}
我检查了Firebase存储方面的路径,文件路径是正确的,它似乎无法检索图像.
下载映像的代码位于下载文件的viewdidload()函数中
override func viewDidLoad() {
super.viewDidLoad()
storageRef = FIRStorage.storage().reference()
let paths = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory,
NSSearchPathDomainMask.UserDomainMask, true)
let documentsDirectory = paths[0]
let filePath = "file:\(documentsDirectory)/myimage.jpg"
let storagePath = NSUserDefaults.standardUserDefaults().objectForKey("storagePath") as! String
print("---------------")
print(filePath)
print("---------------")
print(storagePath)
// [START downloadimage]
storageRef.child(storagePath).writeToFile(NSURL.fileURLWithPath(filePath),
completion: …Run Code Online (Sandbox Code Playgroud)