将whatsapp消息导出到react-native应用

时间:2019-04-27 07:15:33

标签: react-native whatsapp

我正在尝试使用react-native从我的设备访问whatsapp消息。直接访问它们似乎是不可能的,因此我正在研究导出消息并将其导入我的应用程序的可能性。 whatsapp共享菜单当前提供的选项缺少任何直接的download选项。

是否可以将我的应用添加到whatsapp共享菜单?还是有一种简单的方法来导入这些消息?

2 个答案:

答案 0 :(得分:1)

您可以使用https://github.com/meedan/react-native-share-menu这个库从Whatsapp导出聊天。从WhatsApp导出聊天文件时,您的应用程序将显示在共享对话框中。之后,您可以像下面这样从应用程序中打开该文件

  ShareMenu.getSharedText((text :string) => {
  if (text && text.length) {
    if (text.startsWith('content://media/')) {
      //this will be a media
    } else {
      content = this.readFile(text) 
    }
  }
})

然后您可以使用RNFS库读取该文件的内容

readFile = async (path) => {
    try {
      const contents = await RNFS.readFile(path, "utf8");
      return("" + contents);
    } catch (e) {
      alert("" + e);
    }
  };

获取聊天内容后,您可以解析该聊天。

答案 1 :(得分:0)

我们在构建 Website 来分析 WhatsApp 聊天时遇到了同样的问题,因为在 android 中您无法将导出的聊天保存在设备上。

我们的解决方案是使用 PWA (Progressive Web App) 并侦听共享事件。 当有人现在安装 PWA 时,他们可以直接与应用程序共享导出。 (目前,这仅支持带有 Chrome 的 Android,因为 Apple 强烈反对 PWA)

我们的implementation

if (workbox) {
    workbox.addEventListener("message", (m) => {
        // eslint-disable-next-line no-prototype-builtins
        if (_this.$route.query.hasOwnProperty("receiving-file-share")) {
            let files = m.data.file;
            // currently only the first file, but ultimately we want to pass all files
            _this.$refs.filehandler.processFileList(files, true);
        }
    });
    workbox.messageSW("SHARE_READY");
}