Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将本地应用程序数据存储与谷歌驱动器和iCloud反应

将本地应用程序数据存储与谷歌驱动器和iCloud反应
EN

Stack Overflow用户
提问于 2019-11-12 06:31:41
回答 1查看 1.5K关注 0票数 5

我试图根据用户设备将我的应用程序数据存储在Google和iCloud上,我不想使用异步存储、redux状态,也不想在服务器云(即AWS )上存储数据。基本上,我喜欢WhatsApp为安卓设备在谷歌驱动器上进行数据备份的方式,而对于IOS devices.This设备,我希望将加密数据的私钥存储在驱动器或iCloud上,以便如果用户更改设备,我可以从驱动器或iCloud获得这些密钥,并继续进行解密机制。我找到了https://github.com/manicakes/react-native-icloudstore,这是我为iCloud.But服务的目的,我还没有在Googledrive.Can上找到任何相同的线路,请给我建议更好的方法来满足以上要求。

EN

回答 1

Stack Overflow用户

发布于 2022-02-04 02:22:38

对于Google实现,您可以检查这个包:react本机-google-驱动器-api-包装器。您必须在此包中使用Google SignIn才能获得访问令牌,安装此包时也要使用反应-本机-谷歌-签名/谷歌-签名

一个快速的例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  import { GoogleSignin } from "@react-native-google-signin/google-signin";
import {
  GDrive,
  ListQueryBuilder,
  MimeTypes
} from "@robinbobin/react-native-google-drive-api-wrapper";
import React, {
  useCallback,
  useEffect,
  useState
} from "react";
import {
  AppRegistry,
  Button,
  SafeAreaView,
  StyleSheet
} from "react-native";
import { name } from './app.json';

function App() {
  const [gdrive] = useState(() => new GDrive());
  const [ui, setUi] = useState();
  
  const invoker = useCallback(async cb => {
    try {
      return await cb();
    } catch (error) {
      console.log(error);
    }
  }, []);
  
  const createBinaryFile = useCallback(async () => {
    console.log(await invoker(async () => (
      await gdrive.files.newMultipartUploader()
        .setData([1, 2, 3, 4, 5], MimeTypes.BINARY)
        .setRequestBody({
          name: "bin",
          //parents: ["folder_id"]
        })
        .execute()
    )));
  }, [invoker]);
  
  const createIfNotExists = useCallback(async () => {
    console.log(await invoker(async () => (
      await gdrive.files.createIfNotExists(
        {
          q: new ListQueryBuilder()
            .e("name", "condition_folder")
            .and()
            .e("mimeType", MimeTypes.FOLDER)
            .and()
            .in("root", "parents")
        },
        gdrive.files.newMetadataOnlyUploader()
          .setRequestBody({
            name: "condition_folder",
            mimeType: MimeTypes.FOLDER,
            parents: ["root"]
          })
        )
    )));
  }, [invoker]);
  
  const createFolder = useCallback(async () => {
    console.log(await invoker(async () => (
      await gdrive.files.newMetadataOnlyUploader()
        .setRequestBody({
          name: "Folder",
          mimeType: MimeTypes.FOLDER,
          parents: ["root"]
        })
        .execute()
    )));
  }, [invoker]);
  
  const createTextFile = useCallback(async () => {
    console.log(await invoker(async () => {
      return (await gdrive.files.newMultipartUploader()
        .setData("cm9iaW4=", MimeTypes.TEXT)
        .setIsBase64(true)
        .setRequestBody({
          name: "base64 text",
        })
        .execute()).id;
    }));
  }, [invoker]);
  
  const emptyTrash = useCallback(async () => {
    if (await invoker(async () => {
      await gdrive.files.emptyTrash();
      
      return true;
    }))
    {
      console.log("Trash emptied");
    };
  }, [invoker]);
  
  const getWebViewLink = useCallback(async () => {
    console.log(await invoker(async () => (
      await gdrive.files.getMetadata(
        "some_id", {
          fields: "webViewLink"
        }
      )
    )));
  }, [invoker]);
  
  const readFiles = useCallback(async () => {
    console.log(await invoker(async () => (
      await gdrive.files.getText("text_file_id")
    )));
    
    console.log(await invoker(async () => (
      await gdrive.files.getBinary("bin_file_id", null, "1-1")
    )))
  }, [invoker]);
  
  useEffect(() => {
    GoogleSignin.configure({
      scopes: [
        "https://www.googleapis.com/auth/drive",
        "https://www.googleapis.com/auth/drive.appfolder"
      ]});
    
    (async () => {
      if (await invoker(async () => {
        await GoogleSignin.signIn();
        
        gdrive.accessToken = (await GoogleSignin.getTokens()).accessToken;
        
        gdrive.files.fetchCoercesTypes = true;
        gdrive.files.fetchRejectsOnHttpErrors = true;
        gdrive.files.fetchTimeout = 1500;
        
        return true;
      }))
      {
        setUi([
          ["create bin file", createBinaryFile],
          ["create folder", createFolder],
          ["create if not exists", createIfNotExists],
          ["create text file", createTextFile],
          ["empty trash", emptyTrash],
          ["get webViewLink", getWebViewLink],
          ["read files", readFiles]
        ].map(([title, onPress], index) => (
          <Button
            key={index}
            onPress={onPress}
            title={title}
          />
        )));
      }
    })();
  }, [
    createBinaryFile,
    createFolder,
    createIfNotExists,
    createTextFile,
    emptyTrash,
    getWebViewLink,
    readFiles,
    invoker
  ]);
  
  return (
    <SafeAreaView
      style={styles.container}
    >
      {ui}
    </SafeAreaView>
  );
}

const styles = StyleSheet.create({
  container: {
    backgroundColor: "cyan",
    flex: 1,
    justifyContent: "space-around",
    padding: 25
  }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58820742

复制
相关文章
哪种云存储服务最适合你?
早在2007年的时候,Dropbox首席执行官Drew Houston实在受不了经常弄丢USB驱动器,个人和小公司云存储这个概念还是很前卫的想法。而如今,每个人似乎都在提供便宜或免费的云存储服务。 这
静一
2018/03/23
5K0
基于Python操作将数据存储到本地文件
前面说过Python爬取的数据可以存储到文件、关系型数据库、非关系型数据库。前面两篇文章没看的,可快速戳这里查看!《使用Python将数据存入SQLite3数据库》
JiekeXu之路
2019/08/15
5.4K0
批量导出 ICloud 照片到本地
阻止 iPhone 用户切换到华为用户的最大障碍就是 iCloud 上的照片无法导出。
颇忒脱
2023/09/12
1K0
iOS本地数据存储
数据存储本质就是运行时的对象保存在文件、数据库中。数据存储可以分为两步:首先是将对象转换成二进制数据,这一步也叫序列化;相反,将二进制数据转换成对象则称为反序列化;然后是考虑二进制数据如何保存和读取。
落影
2019/07/15
3K0
iOS本地数据存储
使用 JDAudioCrawler 将下载的音频存储到本地存储
在当今数字化时代,音频数据的获取和处理变得越来越重要。本文将访问网易云音乐为案例,介绍如何使用JDAudioCrawler这个强大的工具,将音频数据存储下载到本地存储中。将详细介绍实现的流程和代码细节。
小白学大数据
2023/10/25
2920
本地存储——sessionStorage和localStorage
随着互联网的快速发展,基于网页的应用越来越普遍,同时也变得越来越复杂,为了满足各种各样的需求,会经常性在本地存储大量的数据,HTML5规范提出了相关解决方案。
岳泽以
2022/10/26
8590
localStorage和sessionStorage本地存储
使用HTML5中的Web Storage API, 可以在客户端存储更多的数据,,可以实现数据在多个页面中共享甚至是同步,对于复杂的数据,可以使用 Web SQL Database API 来实现。
达达前端
2021/02/04
2.1K0
「MAC教程」优化「照片」应用所占用的存储空间
当你把大量照片导入 OS X 的「照片」应用时,有没有发现你的存储空间在急剧的变小?此外 iOS 设备上是不是也是这样?如何优化本地的「照片」存储? 
MAC先森
2019/09/22
3.3K0
超好用iOS管软件iMazing 2.16.6官网下载及2023新增功能
本文参考:https://m.sohu.com/a/620990638_121324361?_trans_=010004_pcwzy iMazing 2.16.6这是一款非常方便的 iPhone 管理
用户9208731
2022/12/25
9130
超好用iOS管软件iMazing 2.16.6官网下载及2023新增功能
如何集成云层与本地存储
云和本地存储正走向越来越紧密的整合,于是云成为了另一个存储管理员可用的层级。 组织不大可能把100%的数据都移到云服务上,但大多数企业都会至少想让一部分数据能够利用云存储的优势。最好的方法是以混合的方
静一
2018/03/22
8630
如何集成云层与本地存储
【iOS开发】如何将 Array 存储在本地
做开发的时候,我们经常需要将数据保存在plist文件中,用这种方式来将数据写入磁盘,这样退出 App 再打开的话,上次写入的文件还在。
KyXu
2019/04/11
1.4K0
【iOS开发】如何将 Array 存储在本地
web本地存储localStorage和sessionStorage
记录本地存储的相关信息(cookie,sessionStorage,LocalStorage等)的存储信息
用户1055830
2019/05/25
1.9K0
cookie和本地存储的区别
cookie 基本概念 cookie非常小,限制在4kb左右,很多浏览器都限制一个站点最多保存20个cookie。 如果没有设置时间,则表示cookie的生命期为浏览器会话期间,关闭浏览器窗口,cookie就会消失,这种被称为会话cookie,它会被保存在内存中。 当设置了过期时间,浏览器会把cookie保存在硬盘中,关闭浏览器之后任然有效,直到超过设定的过期时间。 设置和获取cookie的方法 原生 // 使用js创建cookie document.cookie="username=John Doe
念念不忘
2019/03/29
2.5K0
本地存储
存储数据:sessionStorage.setItem(key,value) 获取数据:sessionStorage.getItem(key) 删除数据:sessionStorage.remove(key) 删除所有数据:sessionStorage.clear()
切图仔
2022/09/08
1.1K0
本地存储
随着互联网的快速发展,基于网页的应用越来越普遍,同时也变的越来越复杂,为了满足各种各样的需求,会经常性在本地存储大量的数据,HTML5规范提出了相关解决方案。
梨涡浅笑
2022/05/08
1.3K0
iCloud和Shortcuts,实现跨设备同步与自动化数据采集
在我们日常工作中,经常需要将数据从一个设备传输到另一个设备,并且希望能够自动化地进行数据采集。为了满足这一需求,苹果公司提供了两个强大的工具——iCloud和Shortcuts。
华科云商小彭
2023/09/04
4720
iCloud和Shortcuts,实现跨设备同步与自动化数据采集
vuex存储和本地存储(localstorage、sessionstorage)的区别
1.区别:vuex存储在内存,localstorage(本地存储)则以文件的方式存储在本地,永久保存;sessionstorage( 会话存储 ) ,临时保存。localStorage和sessionStorage只能存储字符串类型,对于复杂的对象可以使用ECMAScript提供的JSON对象的stringify和parse来处理。
TimothyJia
2020/04/02
1.9K0
本地存储
为了满足各种各样的需求,会经常性在本地存储大量的数据,HTML5规范提出了相关解决方案。
星辰_大海
2020/10/09
1.4K0
点击加载更多

相似问题

将iCloud数据迁移到本地存储并阻止iCloud仍然响应

22

iCloud驱动器与iCloud文档

20

将iCloud存储迁移到本地

10

将核心数据存储从iCloud迁移到本地

45

iCloud对iCloud驱动器和CloudKit

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文