# 自動通信を利用する際の注意点について

LINE Things Developer Trial提供終了のお知らせ

LINE Things Developer Trialについて、誠に勝手ながら2024年3月31日をもちまして提供を終了いたします。提供終了に伴い、2024年4月1日以降はAPIの呼び出しや、デバイスとの接続が出来なくなります。

ご不明な点がございましたら、お問い合わせフォーム (opens new window)からご連絡ください。

ご利用いただいているお客様には多大なご迷惑をお掛けすることとなり、誠に申し訳ございません。何卒ご理解を賜りますよう、よろしくお願い申し上げます。

自動通信を正しく使用するための注意事項を説明します。

# トリガー: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 画面 シナリオの実行
終了状態 - 実行されない
通常状態 - 実行される
バックグラウンド状態 点灯 実行される
バックグラウンド状態 消灯
  • autoClose = falseが設定されたシナリオセットは、実行される
  • autoClose = trueが設定されたシナリオセットは、停止される。ただし、デバイスの電波圏内に入り接続可能になった場合は、実行されることがある

# Androidの場合

LINEの状態、画面の表示状態、Dozeモードかどうかによって、以下のとおりに動作します。

LINE 画面 Dozeモード シナリオの実行
終了状態 - - 実行されない
通常状態 - - 実行される
バックグラウンド状態 点灯 - 実行される
バックグラウンド状態 消灯 通常モード 実行される
バックグラウンド状態 消灯 Dozeモード
  • autoClose = falseが設定されたシナリオセットは、実行される。
  • autoClose = trueが設定されたシナリオセットの場合は、シナリオの実行が停止される。ただし、デバイスの電波圏内に入り接続可能になった場合は、実行されることがある

Webhookに実行結果が送信されるタイミングや、SLEEPから復帰する時間は、大幅に遅延する場合があります。

また、機種によって大きく動作が異なる可能性があります。