# 自動通信を利用する際の注意点について
自動通信を正しく使用するための注意事項を説明します。
# トリガー:BLE_NOTIFICATIONのシナリオについて
autoClose = true
を設定した場合は、トリガー:BLE_NOTIFICATIONのシナリオだけを含んだシナリオセットは、登録できません。
そのようなシナリオセットは、通知がない限り実行中にならず、デバイスとの接続がすぐに切断されてしまうためです。
逆に、他のシナリオを実行中に通知を受け取るシナリオセットにすれば、登録できます。たとえば、autoClose = true
に設定したシナリオセットに、トリガー:BLE_NOTIFICATIONのシナリオと、トリガー:IMMEDIATEでアクション:SLEEPのシナリオを追加し、通知を待ち受けるようにすれば、登録できます。
# バックグラウンド状態での実行について
私たちは、LINEを起動している状態で、自動通信によってシナリオが正しく期待した動作することを確認しています。
一方、LINEを起動していない状態(バックグラウンドの状態)での動作は、LINEの実行状態や、スマートフォンの状態によって、実行が制限されることがあります。
どのような環境でもできる限り正しく動作させるためには、守らなくてはいけない制約と、注意点があります。
- ここで説明している内容を守った場合でも、正しく意図通りに自動通信が動作することを保証するわけではありません。
- ここで説明している内容から外れたシナリオを登録すると、正しく意図通りに自動通信が動作しない可能性が非常に高くなります。
- 今後、iOSやAndroidの仕様の変更により、正しく動作しなくなる可能性があります。
# autoClose = false
を設定した場合(推奨)
シナリオセットのパラメータでautoClose = false
を設定した場合は、デバイスとの接続は切断されません。
LINEがデバイスを一度発見すると、電波が届く範囲にある限り、接続を維持します。
この場合は、接続直後を除いて、トリガー:BLE_NOTIFICATIONのシナリオによって、アクションを実行するように設定してください。
バックグラウンド状態でも、端末やOSによる違いは少なく、問題なく再接続が行われる可能性が高いです。
ただし、Webhookに実行結果が送信されるタイミングが遅延する場合があります。
# autoClose = true
を設定した場合
シナリオセットのパラメータでautoClose = true
を設定した場合は、「実行中のシナリオ」がなくなったときに、デバイスとの接続が切断されます。
接続切断後、suppressionInterval
で設定した時間が経過すると、デバイスと再接続され、シナリオが実行されます。
「実行中のシナリオ」とは、トリガーに従って実行が開始された後、アクションを実行中のシナリオ、または実行キューに入れられたシナリオを指します。つまり、トリガー:BLE_NOTIFICATIONのシナリオが、デバイスからの通知を待ち受けている場合は、「実行中のシナリオ」とは呼びません。
suppressionInterval
で設定した時間が経過したあとの動作は、LINEの状態と、iOSやAndroidの実行環境に強く依存します。これは、iOSやAndroidは、バックグラウンド状態のアプリの動作を大きく制限するためです。たとえば、画面が消灯していたり、LINEがバックグラウンド状態では、自動通信が動作しない可能性があります。
特に、LINEがバックグランド状態では、suppressionInterval
で設定した時間間隔で、定期的にシナリオが実行されることを期待してはいけません。また、Webhookに実行結果が送信されるタイミングが遅延する場合もあります。
# アクション:SLEEPのシナリオの制限
アクション:SLEEPのシナリオのsleepMillis
に設定する時間は、5秒以下にしてください。
5秒以上の時間を設定すると、LINEがバックグラウンド状態のときに、シナリオの実行が中断される可能性があります。
# iOSとAndroidの違い
自動通信が実行できる状況は、iOSとAndroidによって異なります。
以下の動作は、今後のOSのアップデートなどによって、変更される可能性があります。
# iOSの場合
LINEの状態と、画面の表示状態によって、以下のとおりに動作します。
LINE | 画面 | シナリオの実行 |
---|---|---|
終了状態 | - | 実行されない |
通常状態 | - | 実行される |
バックグラウンド状態 | 点灯 | 実行される |
バックグラウンド状態 | 消灯 |
|
# Androidの場合
LINEの状態、画面の表示状態、Dozeモードかどうかによって、以下のとおりに動作します。
LINE | 画面 | Dozeモード | シナリオの実行 |
---|---|---|---|
終了状態 | - | - | 実行されない |
通常状態 | - | - | 実行される |
バックグラウンド状態 | 点灯 | - | 実行される |
バックグラウンド状態 | 消灯 | 通常モード | 実行される |
バックグラウンド状態 | 消灯 | Dozeモード |
|
Webhookに実行結果が送信されるタイミングや、SLEEPから復帰する時間は、大幅に遅延する場合があります。
また、機種によって大きく動作が異なる可能性があります。