NEWS
お知らせ
【新機能紹介】「ローカル通知の構成」を掘り下げる
この記事では、「【新機能紹介】ローカル通知の構成について」では触れなかった、ローカル通知の構成を実行し通知を操作した際の、細かな挙動について解説します。
はじめに
特に記載がない場合、「 FileMaker Go がフォアグラウンドであるときのファイル」 は、「 ローカル通知の構成を実行したファイル」であるとします。
通知の操作に伴うスクリプトの実行について
FileMaker Pro 17 Advanced ヘルプ: ローカル通知の構成 には、指定したスクリプトが実行されるのは、以下の場合であると記載されています。
-
ユーザが通知を操作したあと。
-
FileMaker Go がフォアグラウンドで実行されているとき。
-
FileMaker Go で通知が無効になっている場合、通知が表示されたとき。(原文ママ)
ヘルプではこのように軽くしか触れられていませんが、もう少し詳しくスクリプトが実行される際の挙動を確認してみましょう。
1. 通知が表示されるタイミングで FileMaker Go がフォアグラウンドにあった場合
通知は表示されず、[遅延] 秒後に [スクリプト] が実行されます。
2. OS の通知設定で FileMaker Go に通知の許可をしていない場合
ローカル通知の構成を実行した直後に [スクリプト] が実行されます。
3. FileMaker Go にスクリプトがキューされ実行される条件とその挙動の詳細
何らかの操作で FileMaker Go がフォアグラウンドになったとき、FileMaker Go にキューされた(されていた)スクリプトが順次実行されます。ただし、この操作にアプリ ( FileMaker Go ) のタスクキルが挟まると、非常に複雑な動きとなります。
※ファイルを閉じたとき ( フォアグラウンドの FileMaker Go をタスクキルしたときも同様 ) の挙動は、後述の 4.4. を参照してください。
-
何度かローカル通知の構成を実行する → FileMaker Go をバックグラウンドに切り替える → FileMaker Go をタスクキルする → いくつかの通知で <前面> 設定ではないボタンを押す → <前面> 設定のボタンを押す
【結果】
<前面> 設定のボタンを押した通知に指定された [スクリプト] のみが実行される。 -
何度かローカル通知の構成を実行する → FileMaker Go をバックグラウンドに切り替える → FileMaker Go をタスクキルする → いくつかの通知で <前面> 設定ではないボタンを押す → FileMaker Go を手動でフォアグラウンドに切り替える
【結果】
[スクリプト] はひとつも実行されない。 -
何度かローカル通知の構成を実行する → FileMaker Go をバックグラウンドに切り替える → FileMaker Go をタスクキルする → FileMaker Go を手動でフォアグラウンドに切り替える → FileMaker Go をバックグラウンドに切り替える → いくつかの通知で <前面> 設定ではないボタンを押す → <前面> 設定のボタンを押す
【結果】
すべての [スクリプト] が実行される。 -
何度かローカル通知の構成を実行する → FileMaker Go をバックグラウンドに切り替える → FileMaker Go をタスクキルする → FileMaker Go を手動でフォアグラウンドに切り替える → FileMaker Go をバックグラウンドに切り替える →いくつかの通知で <前面> 設定ではないボタンを押す → FileMaker Go をフォアグラウンドに切り替える
【結果】
すべての [スクリプト] が実行される。
手順だけを見るとわかりにくいですが、要は、通知に対しアクションをして [スクリプトの情報] をキューする際に、バックグラウンドの FileMaker Go で目的のファイルが開いている、もしくは開くことができれば、スクリプトのキューが成功します。
また、1. と 2. の結果を見るに、バックグラウンドのでタスクキルされた FileMaker Go に対し、通知から FileMaker Go をフォアグラウンドに切り替える動きをする場合は、タスクキルされる直前の状態を復元 ( つまり目的のファイルが開かれた状態に ) にした上で [スクリプトの情報] をキューするが、[前面] 指定がない場合、FileMaker Go をフォラグラウンドに切り替える働きがないので、目的のファイルを特定できず、正常に [スクリプトの情報] をキューすることができない、という動作をしているように見えます。
4. スクリプトが実行されない条件
-
通知を 3D Touch して × ボタンを押すか、ロック画面で通知を左にスワイプして <消去> をタップし、通知を削除した場合。
-
ロック画面で、特定の日付の通知履歴を削除する機能を使い、通知を削除した場合。
-
ロック画面で、すべての通知を削除する機能を使い、通知を削除した場合。
-
ローカル通知の構成を実行したあとに現在開いているファイルを閉じ、通知に対しスクリプトが実行される操作を行った場合。ただし 3.1.~3.4. で示したとおり、ファイルを閉じたあとに、一度手動でファイルを開いた上で、そのあとに通知から FileMaker Go をフォアグラウンドに切り替えた場合は、指定したスクリプトが実行されます。
※ フォアグラウンドにある FileMaker Go をタスクキルした場合、 ファイルを閉じたとみなされます 。一方、バックグラウンドにある FileMaker Go をタスクキルした場合は、ファイルを閉じたとはみなされません 。
5. ログインアカウントに fmreauthenticate 拡張アクセス権を割り当てている場合
-
設定値以内に、通知から、もしくは手動で FileMaker Go をフォアグラウンドに切り替えたとき。
そのままFileMaker Go がフォアグラウンドに切り替わり、指定したスクリプトが実行されます。 -
設定値より後に、通知から、もしくは手動で FileMaker Go をフォアグラウンドに切り替えたとき。
サインインを求められ、サインイン後に指定したスクリプトが実行されます。
[スクリプト] で指定できるスクリプト引数の特性
ローカル通知の構成によって実行される [スクリプト] 内でスクリプト引数を取得した場合、固有のスクリプト引数を付与した値が返されます。この値によって、様々な条件分岐を設定することが可能です。
1行目~3行目には、ローカル通知の構成固有の値が入る。
1行目 : 通知の名前を返す。
2行目 : 通知に対するユーザのアクション、または通知された時点における、ファイルやデバイスの状態を表すテキストを返す。
3行目 : [スクリプト] の実行が、ボタン操作により予約(キュー)された時に、通知の操作によって FileMaker Go がフォアグラウンドに切り替わってスクリプトが実行されれば 1 を、手動、もしくは別の通知によって FileMaker Go がフォアグラウンドに切り替わり、スクリプトが実行されれば 0 を返す。
4行目に、[スクリプト] で指定した引数の値が入る。
ユーザが指定したスクリプト引数の情報は通知のキューが保持しているため、ローカル通知の構成後にファイルを閉じたとしても、スクリプトが実行されさえすれば、ローカル通知の構成をした時点において指定したスクリプト引数を保持したまま、スクリプトが実行されます。
ほぼ同時に複数の通知がキューされた場合
ディスプレイの上に表示される通知が、 「タイトル: なし (タイトル自体がなくなる), ボディ: n件の新規FileMaker Go通知があります」 という通知になり、ローカル通知の構成で指定した [タイトル] および [ボディ] を確認することができなくなります。また、この通知をタップした場合、ひとまとめになった通知のうち、最初にキューされた通知に設定されたスクリプトしか実行されません。
※ロック画面では一つひとつの通知として表示されます。