NIFCLOUD-mbaas / UserCommunity

ニフクラ mobile backend ユーザーコミュニティ
https://mbaas.nifcloud.com/
81 stars 18 forks source link

プッシュ通知の送信履歴の表示について #1307

Open S-Kaneko-5517 opened 2 years ago

S-Kaneko-5517 commented 2 years ago

flutter webでプッシュ通知の送信結果を画面で確認できるように開発をしています。

デバックだと、プッシュ通知の送信結果は表示できるのですが、デプロイした環境だと表示されません。 表示箇所がグレーのボックスで隠された状態になります。 以下が隠される箇所のソースです。

DataTable2(
    columnSpacing: defaultPadding,
    minWidth: 600,
    columns: const [
      DataColumn(label: Text("タイトル")),
      DataColumn(label: Text("ターゲットデバイス")),
      DataColumn(label: Text("配信端末数")),
      DataColumn(label: Text("ステータス")),
      DataColumn(label: Text("配信日")),
    ],
    rows: push.entries
        .map(
          (e) => DataRow(
            selected: model.pushSelected[e.key],
            onSelectChanged: (bool? selected) {
              model.rowBoxChecked(e.key, selected!);
            },
            cells: [
              DataCell(
                Text(push[e.key].getString('title'),
                    overflow: TextOverflow.ellipsis),
              ),
              DataCell(
                Text(push[e.key].get('target')[0].toString(),
                    overflow: TextOverflow.ellipsis),
              ),
              DataCell(
                Text(
                    push[e.key].getInt('deliveryNumber').toString(),
                    overflow: TextOverflow.ellipsis),
              ),
              DataCell(
                Text(push[e.key].getInt('status').toString(),
                    overflow: TextOverflow.ellipsis),
              ),
              DataCell(Text(
                  viewDate(
                      push[e.key]
                          .getDateTime('deliveryTime'),
                      DateFormat('yyyy/M/d(E) HH:mm', 'ja')),
                  overflow: TextOverflow.ellipsis)),
            ],
          ),
        )
        .toList(),
  );

デバックとデプロイした環境では、プッシュ通知の送信結果の取得方法が変わったりするのでしょうか?

S-Kaneko-5517 commented 2 years ago

エラー箇所を確認できました。 一つずつDataCellをコメントアウトしていったところ、deliveryTimeでエラーになりました。 書式の変更をしないで、ただ表示するだけでもエラーになりました。

DataCell(Text(push[e.key].getDateTime('deliveryTime').toString(),overflow: TextOverflow.ellipsis))

配信時刻の表示には権限などの設定があるのでしょうか?

goofmint commented 2 years ago

deliveryTimeが空ということはないでしょうか?getDateTimeの2つ目の引数(オプショナル)でdefaultValueを与えられますので、そこで現時刻などを与えてみてください。

S-Kaneko-5517 commented 2 years ago

回答ありがとうございます。defaultValueに時刻を入れてみましたが変わりませんでした。 deliveryTimeをデバックとデプロイでそれぞれ取得してみました。

デバック 2022-07-11 01:22:38.540

デプロイ {__type:Date,iso:2022-07-11T01:22:38.540Z}

空ではないようですが、取得内容が異なっていました。何か分かるでしょうか?

goofmint commented 2 years ago

おお、そんな違いがあるのですね。現状では後者(デプロイ)が来ることを想定しています。前者は文字列でしょうか?

S-Kaneko-5517 commented 2 years ago

デバックの方が想定外なんですね。表示できたのがデバックの方なのでデプロイが想定外だと思っていました。 前者は文字列です。

ちなみにデバック、デプロイ共に以下のコードで実行画面に表示させました。 DataCell(Text(push[e.key].getDateTime('deliveryTime').toString()))

goofmint commented 2 years ago

こちらありがとうございます。不具合なのは確かなので(本当は日付としてパースされるはず)、調べてみます(おそらくデバッグとデプロイで値の型が異なっているようです)。

S-Kaneko-5517 commented 2 years ago

よろしくお願いします。

goofmint commented 2 years ago

こちら2.6.1にて修正しました。DateTime型で返ってきます。