新規投稿
フォローする

モバイルのレコード追加画面の保存成功後の画面遷移について(RestAPI処理関連)

いつもお世話になっております。

少し前の投稿で、「GCPのOCR機能を使って、その結果を画像とともに保存することをやろうとしていて、OCRを利用する時は画像の解像度が大きいものを使って、保存する際には画像の容量を小さくして保存すること」に関して、「フォームのスペースにcanvasを描画し、そのスケールを調整しておく。 'app.record.create.submit.success'のevent時にcanvasから作成したファイルをPUTする。」ことで対応できたことを記載しました。

ところが、PC画面では、保存後にレコード詳細画面に遷移するので問題ないのですが、モバイル画面では、保存を押しても画面がレコード詳細画面遷移しません(レコード追加画面のままで、保存とキャンセルボタンが表示されたまま)。レコード自体は保存されているので、単に遷移の問題かと思います。→ これは間違いでした。レコードは保存されていますが、リサイズして縮小されて保存されている筈の写真が、元の大きさで保存されていますので、このevent処理そのものがモバイル版だけうまくいっていないようです。

対応方法をご教示いただけると助かります。以下コードです。

     kintone.events.on([
'mobile.app.record.create.submit.success',
], function(event){
return new kintone.Promise(function(resolve){
    // canvasはグローバル変数で、レコード登録画面のcanvasに描画されたものです
canvas.toBlob(function(blob){
var formData = new FormData();
var xhr = new XMLHttpRequest();
formData.append('__REQUEST_TOKEN__', kintone.getRequestToken());
formData.append('file', blob, file.name);
xhr.open('POST', encodeURI('/k/v1/file.json'));
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
xhr.addEventListener('load', function(){
kintone.api('/k/v1/record', 'PUT', {
app: kintone.mobile.app.getId(),
id: event.recordId,
record: {
添付ファイル: {
value: [
{fileKey: JSON.parse(xhr.responseText).fileKey}
]
}
}
}).then(function(){
resolve(event);
});
});
xhr.send(formData);
}, file.type);
});
});
0

2件のコメント

Avatar
juridon

PCでうまくいくのにモバイルではうまくいかないんですね。


やってみていないのでうまくいくかはわからないのですが、
eventを返す前にevent.urlに詳細画面や一覧画面のurlを設定してみるとかどうでしょうか??

↓こちらのurlプロパティの指定でイベント処理後に画面遷移するはず・・・
https://developer.cybozu.io/hc/ja/articles/201941984#success

 

1
Avatar
akatak

juridonさん、ありがとうございます。eventを返す前にevent.urlを設定してみたりしましたが、やはりうまくいきませんでした。

そこで、もう一度、保存されたデータを見たところ、リサイズして縮小した筈の写真が元のサイズのままでした。どうも、遷移の問題ではなく、そもそも、本event処理自体が何らかの原因で、PC版では動作するがモバイル版では動作していないということだと理解しました(なので質問本文も変更します。失礼しました)。もう少し探ってみます。

1
サインインしてコメントを残してください。