反応ネイティブを使用してwhatsappアプリに画像(および可能であればテキスト)を送信/共有する方法を見つけるのに何時間も費やしましたが、
この質問 (Androidの場合)および この質問 (リンクを使用)を読みました
androidでは、whatsappに画像とテキストを送信できますが、ネイティブに反応すると、それをアーカイブする方法がわかりません。
誰もがアイデアを持っていますか?
0.56.0を超える反応ネイティブバージョンでは、ソーシャル共有機能がライブラリに既に実装されているため、 react-native-share のような追加のライブラリは不要になり、管理されない可能性があります。実際、以前のバージョンの反応ネイティブには react-native-share ライブラリを使用していましたが、対応するコードを-を持つShareクラスをエクスポートする反応ネイティブ実装に移行しました- share メソッドであり、非常に使いやすいです。
次に、 share メソッドを使用してデータを共有すると、react-nativeがどのアプリに電話がインストールされているかがわかります。次の画像では、Android WhatsAppアプリケーションがインストールされた携帯電話での共有画面の様子を見ることができます。
そして、これはアプリがインストールされていないiOSシミュレーターでの方法です:
ここでコードの例を見つけることができます:
import React, { Component } from 'react';
import {
Share,
Text,
TouchableOpacity
} from 'react-native';
const shareOptions = {
title: 'Title',
message: 'Message to share', // Note that according to the documentation at least one of "message" or "url" fields is required
url: 'www.example.com',
subject: 'Subject'
};
export default class ShareExample extends React.Component {
onSharePress = () => Share.share(shareOptions);
render(){
return(
<TouchableOpacity onPress={this.onSharePress} >
<Text>Share data</Text>
</TouchableOpacity>
);
}
}
最後に、image + textメッセージを送信するオプションが必要です。-shareOptionsのurlフィールドを使用して、画像のリモートURIを追加できます。 WhatsAppメッセージでプレビューでき、タイトルまたは件名フィールドでテキストを追加できます。 -次のようなbase64ファイルのURLを共有できます:url: 'data:image/png;base64,<base64_data>'
複数の画像を同時に共有したい場合は、react-native-multi-shareを使用できます:)
反応ネイティブ0.59バージョンを使用していましたが、デフォルトの反応ネイティブ共有はmessage
またはurl
のいずれかを取得するため、whatsappで画像とテキスト(リンクを含む)を共有できませんでしたので、必要ですreact-native-shareライブラリを使用するには https://github.com/react-native-community/react-native-share 。また、rn-fetch-blob
ライブラリを使用して、画像のURLをbase64画像データに変換しました。
shareImage= () => {
RNFetchBlob.fetch('GET', `https://example.com/example.png`)
.then(resp => {
console.log('response : ', resp);
console.log(resp.data);
let base64image = resp.data;
share('data:image/png;base64,' + base64image);
})
.catch(err => errorHandler(err));
share = base64image => {
console.log('base64image : ', base64image);
let shareOptions = {
title: 'Title',
url: base64image,
message: 'https://somelink.com some message',
subject: 'Subject'
};
Share.open(shareOptions)
.then(res => {
console.log(res);
})
.catch(err => {
err && console.log(err);
});
};
};