【发布时间】:2019-09-16 14:14:44
【问题描述】:
我正在尝试使用 react-native 从我的设备访问 whatsapp 消息。直接访问它们似乎是不可能的,所以我正在研究导出消息并将它们导入我的应用程序的可能性。 whatsapp 共享菜单当前提供的选项缺少任何直接的download 选项。
有没有办法将我的应用添加到 whatsapp 共享菜单?或者有没有简单的方法来导入这些消息?
【问题讨论】:
标签: react-native whatsapp
我正在尝试使用 react-native 从我的设备访问 whatsapp 消息。直接访问它们似乎是不可能的,所以我正在研究导出消息并将它们导入我的应用程序的可能性。 whatsapp 共享菜单当前提供的选项缺少任何直接的download 选项。
有没有办法将我的应用添加到 whatsapp 共享菜单?或者有没有简单的方法来导入这些消息?
【问题讨论】:
标签: react-native whatsapp
在构建Website 来分析 WhatsApp 聊天时,我们遇到了同样的问题,因为使用 android,您无法将导出的聊天保存在设备上。
我们的解决方案是使用PWA (Progressive Web App) 并监听共享事件。 当有人现在安装 PWA 时,他们可以直接与 App 共享导出。 (目前,这仅支持带有 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");
}
【讨论】:
您可以使用 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);
}
};
获取聊天内容后,即可解析聊天内容。
【讨论】: