質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Cordova

Cordovaは様々なデバイスで使うことができるオープンソースなモバイル用開発プラットフォームです。開発者に各デバイスの元のプラットフォームで開発する必要をなくし、HTML・JavaScript・CSSなどの一般的なウェブのテクノロジーを使ってすべてのデバイスで展開することができるモバイルのアプリケーションを生成することを可能にします。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

Q&A

解決済

2回答

1843閲覧

Monaca:SocialSharing-PhoneGap-Pluginでメール送信

agepan

総合スコア66

Cordova

Cordovaは様々なデバイスで使うことができるオープンソースなモバイル用開発プラットフォームです。開発者に各デバイスの元のプラットフォームで開発する必要をなくし、HTML・JavaScript・CSSなどの一般的なウェブのテクノロジーを使ってすべてのデバイスで展開することができるモバイルのアプリケーションを生成することを可能にします。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

0グッド

0クリップ

投稿2017/05/12 01:08

編集2017/05/12 01:11

MonacaでSocialSharing-PhoneGap-Pluginを使用して、メール送信に関する処理を書いています。

メール送信が完了した場合「送信完了」、メール送信画面まで行ってキャンセルした場合は「送信キャンセル」というアラートを出したく、プラグインのEmail項目にonSuccessとonErrorのパラメーターがあるようでしたので、それを参考に以下のように記述してみました。

window.plugins.socialsharing.shareViaEmail( 'メッセージ内容', '件名', ['aaa@aaa.com', 'iii@iii.com'], ['uuu@uuu.com'], null, null, function() {alert('送信完了');}, function() {alert('送信キャンセル');} );

プラグインページ抜粋↓

window.plugins.socialsharing.shareViaEmail( 'Message', // can contain HTML tags, but support on Android is rather limited: http://stackoverflow.com/questions/15136480/how-to-send-html-content-with-image-through-android-default-email-client 'Subject', ['to@person1.com', 'to@person2.com'], // TO: must be null or an array ['cc@person1.com'], // CC: must be null or an array null, // BCC: must be null or an array ['https://www.google.nl/images/srpr/logo4w.png','www/localimage.png'], // FILES: can be null, a string, or an array onSuccess, // called when sharing worked, but also when the user cancelled sharing via email. On iOS, the callbacks' boolean result parameter is true when sharing worked, false if cancelled. On Android, this parameter is always true so it can't be used). See section "Notes about the successCallback" below. onError // called when sh*t hits the fan );

iPhoneにデバッグビルドをしたアプリを入れて実行させるとメール作成画面が立ち上がり、そのまま送信しても、途中でキャンセル(メール画面を閉じる)しても、どちらも「送信完了」というアラートが出て、振り分けができません。

onSuccessとonErrorが、そもそもそうした用途用にあるパラメーターなのか、その場合、上記要件を満たすにはどのように記述したらいいか、お知恵お借りできればと思います。よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

// called when sharing worked, but also when the user cancelled sharing via email. On iOS, the callbacks' boolean result parameter is true when sharing worked, false if cancelled. On Android, this parameter is always true so it can't be used). See section "Notes about the successCallback" below.

こういうことでは?

javascript

1window.plugins.socialsharing.shareViaEmail( 2 'メッセージ内容', 3 '件名', 4 ['aaa@aaa.com', 'iii@iii.com'], 5 ['uuu@uuu.com'], 6 null, 7 null, 8 function(result) { 9 if(result === true){ 10 alert("送信されました"); 11 }else{ 12 alert("ユーザーによってキャンセルされました");//androidではここが呼ばれず、常に送信されましたとでる。 13 } 14 }, 15 function() {alert('プラグイン起動失敗');} 16);

投稿2017/05/12 02:13

編集2017/05/12 02:14
namimon

総合スコア726

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

agepan

2017/05/12 12:51

ありがとうございます!このコードで、iPhoneで動作確認したところバッチリ動作致しました!onErrorが送信失敗を意味していたのではなくプラグインが起動できなかった場合のエラーを意味していたのですね…。
guest

0

onSuccess, // called when sharing worked, but also when the user cancelled sharing via email. On iOS, the callbacks' boolean result parameter is true when sharing worked, false if cancelled. On Android, this parameter is always true so it can't be used). See section "Notes about the successCallback" below.

but also when the user cancelled sharing via email

なので想定通りの動きです。加えて

On iOS, the callbacks' boolean result parameter is true when sharing worked, false if cancelled. On Android, this parameter is always true so it can't be used

なので Android の場合は動作がおかしいようです。
自分で直してpullRequestを送るか、目をつぶる必要があるようです。

投稿2017/05/12 01:50

TakeoAsai

総合スコア880

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

agepan

2017/05/12 12:54

回答ありがとうございます!記述そのものは問題ないようでしたが、送信失敗(送信キャンセル)がonErrorではなくonSuccessの中で拾えるものであったようで、現在はちゃんと動くようになりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問