Firebase 笔记 02 图片存储,云函数,IOS移动应用开发
创始人
2024-06-02 21:41:07

storage

使用firebase存放图片等资源

网站

https://firebase.google.com/products/storage?hl=zh-cn

初始化

npm init -y

安装相关包

npm install firebase-admin --save
npm install uuid-v4 --save

仍然是在之前 创建的myfirebase进行继续操作就可以
但是需要装一下npm install uuid-v4 --save

相关文件配置

在firebase网站,找到storage,开通服务
在这里插入图片描述
点击这里复制到 main.js的配置文件当中去

在这里插入代码片

就是下面代买 sotrageBucket 里面xxx的内容·

// 把私钥读进来
// 用firebase管理包进行初始化var admin = require("firebase-admin");var serviceAccount = require("./fir-2aa30-firebase-adminsdk-qsuhb-e553450ef4.json");admin.initializeApp({credential: admin.credential.cert(serviceAccount),storageBucket: "xxxx复制到这里"
});var bucket = admin.storage().bucket();

在终端执行

node main.js

没报错。就说明运行成功

增加上传代码

// 把私钥读进来
// 用firebase管理包进行初始化var admin = require("firebase-admin");var serviceAccount = require("./fir-2aa30-firebase-adminsdk-qsuhb-e553450ef4.json");admin.initializeApp({credential: admin.credential.cert(serviceAccount),storageBucket: "gs://fir-2aa30.appspot.com/"
});var bucket = admin.storage().bucket();var uuid = require('uuid-v4');// 文件上传
async function uploadFile(filename) {await bucket.upload(filename, {// 用zip压缩gzip: true,// 增加一个下载的uuid令牌,这样上传之后,可以直接访问到metadata: {metadata: {firebaseStorageDownloadTokens: uuid()},cacheControl: 'public, max-age=31536000',},})console.log('${filename} uploaded.');
}uploadFile('./bea.png').catch(console.error);

确保当前文件夹内有 bea文件
在这里插入图片描述

上传bibi代码

// 把私钥读进来
// 用firebase管理包进行初始化var admin = require("firebase-admin");var serviceAccount = require("./fir-2aa30-firebase-adminsdk-qsuhb-e553450ef4.json");admin.initializeApp({credential: admin.credential.cert(serviceAccount),storageBucket: "gs://fir-2aa30.appspot.com/"
});var bucket = admin.storage().bucket();var uuid = require('uuid-v4');// 文件上传
async function uploadFile(filename) {await bucket.upload(filename, {// 用zip压缩gzip: true,// 增加一个下载的uuid令牌,这样上传之后,可以直接访问到metadata: {metadata: {firebaseStorageDownloadTokens: uuid()},cacheControl: 'public, max-age=31536000',},})console.log('${filename} uploaded.');
}uploadFile('./bibi.png').catch(console.error);

上传成功展示
在这里插入图片描述
下载图片代码
将bea图片下载下来,并命名为dl

// 把私钥读进来
// 用firebase管理包进行初始化var admin = require("firebase-admin");var serviceAccount = require("./fir-2aa30-firebase-adminsdk-qsuhb-e553450ef4.json");admin.initializeApp({credential: admin.credential.cert(serviceAccount),storageBucket: "gs://fir-2aa30.appspot.com/"
});var bucket = admin.storage().bucket();var uuid = require('uuid-v4');// 文件下载// 把私钥读进来
// 用firebase管理包进行初始化var admin = require("firebase-admin");var serviceAccount = require("./fir-2aa30-firebase-adminsdk-qsuhb-e553450ef4.json");admin.initializeApp({credential: admin.credential.cert(serviceAccount),storageBucket: "gs://fir-2aa30.appspot.com/"
});var bucket = admin.storage().bucket();
var uuid = require('uuid-v4');// 文件下载
async function downloadFile(srcFilename, destFilename) {const options = {// 文件下载到的路径destionation: destFilename,};// Downloads the fileawait bucket.file(srcFilename).download(options);console.log(`${srcFilename} downloaded to ${destFilename}.`);
}
downloadFile('bea.png', 'dl.png').catch(console.error);

执行 node.main.js

列出服务器文件

// 把私钥读进来
// 用firebase管理包进行初始化var admin = require("firebase-admin");var serviceAccount = require("./fir-2aa30-firebase-adminsdk-qsuhb-e553450ef4.json");admin.initializeApp({credential: admin.credential.cert(serviceAccount),storageBucket: "gs://fir-2aa30.appspot.com/"
});var bucket = admin.storage().bucket();
var uuid = require('uuid-v4');// 列出服务器文件列表
async function listFiles(){const [files] = await bucket.getFiles();console.log('Files:');files.forEach(file => {console.log(file.name);});
}listFiles().catch(console.error);

删除服务器文件

删除bea.png这个文件

// 把私钥读进来
// 用firebase管理包进行初始化var admin = require("firebase-admin");var serviceAccount = require("./fir-2aa30-firebase-adminsdk-qsuhb-e553450ef4.json");admin.initializeApp({credential: admin.credential.cert(serviceAccount),storageBucket: "gs://fir-2aa30.appspot.com/"
});var bucket = admin.storage().bucket();
var uuid = require('uuid-v4');// 文件删除
async function deleteFile(filename) {await bucket.file(filename).delete();console.log(`${filename} deleted.`);
}deleteFile('bea.png').catch(console.error);

使用云函数

只有开通会员才能使用

网站

https: / /firebase. google.com/ products/ functions

完成初始化

npm init -y
npm install firebase-function@latest firebase-admin@latest --save
npm install uuid-v4 --save
firebase init functions
firebase init emulators
nano functions/package.json

在package.json
查看 package.json
却把这三个包安转了
在这里插入图片描述

初始化本地工程 和 本地模拟器
本地工程写好后 用于 部署到线上
本地模拟器 模拟 线上功能,方便我们调试

firebase init functions 初始化本地工程
在这里插入图片描述
选javaScript
下面默认

完成后,帮助本地建立 function 云函数 文件夹
在里面初始化 三个文件

在这里插入图片描述
firebase emulator
初始化本地化模拟器

选择功能
在这里插入图片描述
其余 默认就好了
设置完后
看一下
在这里插入图片描述

记得云目录下。查看支持 node的版本

cat funtions/package.json

在这里插入图片描述
在这里插入图片描述
查看本地 local的版本

node -v

然后 修改上面配置的node 后面12的数字为 对应版本
在这里插入图片描述
这里是12 就不用改了

虽然系统初始化,会给我们默认一个index.js在functions里面的文件
但是我们需要自己重新写一下

在这里插入图片描述
代码内容解释
在哪个时区接受内容

本地调试函数

firebase emulators:start --project=default

在本地启动模拟器
在这里插入图片描述
在这里插入图片描述
观察上面url的构成
项目名 + 时区 + 函数名
control + c 暂停文件
编辑index文件

然后是访问数据库

需要初始化环境才能访问
在这里插入图片描述
然后下面就可以访问数据库了
在这里插入图片描述
获取users表的前十条数据,然后循环输出

运行

firebase emuLators:start --project=default

访问界面
发现为空
为什么,因这里连接的是本地数据库
而不是网上数据库
所以为空

有两个选择,1:本地数据库添加数据
2. 直接部署上线,就连接线上数据库了

部署上线,连接线上数据库

firebase deploy --only functions

在这里插入图片描述

IOS 联合开发 数据读取

IOS + Firestore联合开发

pod工具安装

pod的官网
https://cocoapods.org/

https://cocoapods.ong/

安装

sudo gem install cocoapods

这里安装不上去
可以用brew安转

brew install cocoapods

安转完 检查版本

pod --version

参考链接

https://juejin.cn/post/6950518188798902286

1.注册应用

com.komavideo.myapp

访问firebase 网站
https://console.firebase.google.com/project/fir-2aa30/overview?hl=zh-cn
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.下载配置文件

GoogleService-Info.plist

如果是之前下载过,后面忘记了,可以进行第二次下载
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
就可以看到这个界面
然后 下载
在这里插入图片描述

打开Xcode创建ios项目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

创建项目后
将 配置的google文件移动到 app目录下
在这里插入图片描述

3. 添加firebase SDK

在终端进入 myapp进行初始化

cd Desktop/myapp/

初始化为工作区

pod init

如果出现初始化失败 参考这个链接解决问题
https://developer.apple.com/forums/thread/668456

在这里插入图片描述
编辑podfile文件

open Podfile

在这里插入图片描述
在这里插入图片描述
报错参考:

https://stackoverflow.com/questions/74327864/pod-install-error-unable-to-determine-the-platform-for-the-adewolefarmap

执行pod install 进行安转

后序还是报错
是ruby版本问题
mac默认ruby版本不能修改
需要下载新的ruby版本到电脑中

brew install chruby ruby-install
ruby-install ruby

参考

https://stackoverflow.com/questions/51126403/you-dont-have-write-permissions-for-the-library-ruby-gems-2-3-0-directory-ma

后面需要修改zsh的配置
但是 会遇到 无权限修改
因此 需要修改 zshrc的权限
然后 才可以修改zshrc的内容

cd ~
vim .zshrc
sudo chmod +x ~/.zshrc

https://stackoverflow.com/questions/64291625/zsh-permission-denied-users-macbookpro-zshrc

我真的服了

还是重新安装修改zshrc路径

brew install ruby
sudo vi .zshrc

把下面这一行添加进去

export PATH="/usr/local/opt/ruby/bin:/usr/local/lib/ruby/gems/3.2.1/bin:$PATH"
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                     

重启 zshrc

source ~/.zshrc

检查正在使用的ruby路径

which ruby

检查ruby版本

ruby -v

安装Ruby版本管理器rvm

curl -L https://get.rvm.io | bash -s stable

Install cocoapods

sudo gem install cocoapodspod setup

参考

https://stackoverflow.com/questions/65199227/realm-requires-cocoapods-version-1-10-which-is-not-satisfied-by-your-cur

这时候再返回去执行pod install
就发现不报错了

重新打开Xcode
找到文件
这次选worksapce结尾
在这里插入图片描述

编译
在这里插入图片描述
写代码 读取 googleinfo配置文件的私钥
连接云服务firebase

因为新生成的Xcode项目已经不在有Deleegate.swift配置文件了
这些旧视频真的害人啊!!!!!!
20分钟搞了一下午都是bug

参考

https://www.jianshu.com/p/94747520c05b

我不太懂swift语言,后面没法写了
等学了之后在更新吧

相关内容

热门资讯

苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...