ラベル プッシュ通知 の投稿を表示しています。 すべての投稿を表示
ラベル プッシュ通知 の投稿を表示しています。 すべての投稿を表示

2023年5月9日火曜日

フォアグラウンドの実行チェーンによるプロセスの整理

 Oracle APEX 23.1よりプロセス・タイプとして実行チェーンが追加されました。主にプロセスをバックグラウンドで実行するための機能ですが、フォアグラウンドの実行も可能です。

フォアグラウンドで実行する場合、設定のバックグラウンドで実行をオフに設定します。


フォアグラウンドの実行チェーンのユースケースには何があるのだろうと思っていましたが、最近、Oracle APEXの開発部門に所属しているSteve Meunchさんが書いた記事を読んで、なるほどと思いました。

Steve Meunchさんの記事は以下になります。


この記事は2023年4月にクロアチアのザグレブで開催されたAPEX Alpe Adrea 2023のセッションを元にしています。一番最後のセクションDownloading My Slidesに、セッションで使用されたスライドのPDFのリンクがあります。


APEX 23.1に実装されたプッシュ通知と実行チェーンが紹介されています。全146ページで、これらの機能を詳細に説明しています。これらの機能の詳細に興味がある方には、一読をお勧めします。

本記事では、実行チェーンのちょっと便利な使い方の説明になります。

例えば、ページに3つのボタンINSERT、UPDATE、DELETEが作成されているとします。


APEX 23.1以前では、ボタンを押した時に実行されるプロセスは、サーバー側の条件で制御する必要がありました。

5つのプロセスが作成されていて、そのうちの3つがボタンINSERTを押した時に実行されるとします。これは、それぞれのプロセスのサーバー側の条件のボタン押下時にINSERTを設定します。


その以外に、ボタンUPDATEを押した時に実行されるプロセスを設定します。


ボタンDELETEを押した時に実行されるプロセスも設定します。


プロセスが実行される条件を見分けるためには、ひとつひとつのプロセスを選択し、サーバー側の条件を確認する必要があります。

実行される条件がわかりやすい名前をつけた実行チェーンを作成し、その実行チェーンのサーバー側の条件を設定することにより、ページ・プロセスを整理することができます。


実行チェーンに含まれるプロセスには、サーバー側の条件を設定する必要はありません。


ページに作成するプロセスの数が2桁に達することも稀ではないので、実行チェーンを使ってプロセスの実行条件が一目で分かるようにできると、とても便利です。

以上になります。

Oracle APEXのアプリケーション作成の参考になれば幸いです。

完

2023年4月21日金曜日

Oracle APEX 23.1のプッシュ通知を使ってみる

apex.oracle.comのAPEXが23.1のプレリリース版にアップグレードされました。APEX 23.1にて提供される新機能のひとつである、プッシュ通知を確認してみます。

いち早く動作を確認した方がYouTubeに動画をポストしていたので、その内容を参考にしました。

Push Notifications - Oracle APEX 23.1 New Features
https://www.youtube.com/watch?v=u_re_3cxz3U

apex.oracle.comのワークスペースを使用します。

アプリケーション作成ウィザードを起動し、新規にアプリケーションを作成します。

アプリケーション・アイコンと名前はプッシュ通知の表示に含まれます。後からでも変更できますが、通知に表示されることを意識して設定することをお勧めします。

機能に含まれるプログレッシブWebアプリケーションのインストールとプッシュ通知にチェックを入れます。

以上で、アプリケーションの作成を実行します。


アプリケーションが作成されます。機能としてプッシュ通知を含めたため、ページ番号20020として、プッシュ通知の設定を行うページが作成されています。


アプリケーションを実行します。

まだ何もアプリケーションには実装していません。

ナビゲーション・バーの一番右にユーザー名のメニューがあります。そのメニューから設定を開きます。


画面右よりドロワーが開きます。プッシュ通知をクリックすると設定画面が開きます。


このデバイスでプッシュ通知を有効にするにチェックを入れると、プッシュ通知が有効化されます。画面上に説明されていますが、通知はデバイスごとに有効にする必要があり、また、ブラウザやデバイスで通知を許可する必要があります。


設定に戻ると、プッシュ通知がオンに変わっていることが確認できます。


ホーム・ページにプッシュ通知を送信する画面を作成します。作成した画面は以下のようになります。


通知先を指定するページ・アイテムを作成します。

識別の名前はP1_PUSH_TO、タイプは選択リストとします。ラベルはPush Toとしています。LOVのタイプにSQL問合せを選択し、SQL問合せとして以下を記述します。

select user_name d, user_name r from APEX_WORKSPACE_APEX_USERS where workspace_id = :WORKSPACE_ID

ワークスペースに作成されているユーザーから、通知の宛先を選択します。


通知のタイトルを記述するページ・アイテムを作成します。

識別の名前はP1_TITLE、タイプはテキスト・フィールド、ラベルはTitleとします。


同様に通知の本文を指定するページ・アイテムを作成します。

識別の名前はP1_MESSAGE、タイプはテキスト・フィールド、ラベルはMessageとします。


プッシュ通知を実行するボタンを作成します。

識別のボタン名をNOTIFY、ラベルをNotifyとします。動作のアクションはデフォルトのページの送信です。


プロセス・ビューを開き、プッシュ通知を行うプロセスを作成します。

識別の名前をプッシュ通知とします。タイプにプッシュ通知の送信を選択します。

設定の宛先は&P1_PUSH_TO.、タイトルは&P1_TITLE.、本文は&P1_MESSAGE.とします。リンク・ターゲットに、同じアプリケーションのページ番号1を指定します。

ボタンNotifyをクリックした時に実行されるように、サーバー側の条件のボタン押下時としてNOTIFYを選択します。


アプリケーションを実行し、アプリケーションのインストールを実施します。


アプリケーションのインストールができたら、プッシュ通知の設定を再度確認します。


Push To、Title、Messageを指定して、Notifyをクリックして通知を実行します。


Apple iOSのデバイスに作成したアプリをインストールし、通知を確認してみました。PWAのプッシュ通知はiOS/iPadOS 16.4以降のSafariでサポートされます。


プッシュ通知の実装の確認は以上です。

動かないと思ったら?


通知のサブスクリプションが登録されているかどうか、ビューAPEX_APPL_PUSH_SUBSCRIPTIONSを検索して確認します。

select * from APEX_APPL_PUSH_SUBSCRIPTIONS;


Google Chromeから通知を設定した場合はSUBSCRIPTION_INTERFACEのendpointとしてfcm.googleapis.com、Appleのデバイスではweb.push.apple.comを呼び出すように設定されています。

一見してサブスクリプションが登録されているように見えても、プッシュ通知をONにしたままPWAとしてインストールしたアプリケーションを削除した場合など、無効なサブスクリプションが残っていることがあります。通知を受けるアプリケーションでプッシュ通知のオン・オフを行い、サブスクリプションが正しく登録されていることを確認します。

プッシュ通知は、APEXのインスタンスからfcm.googleapis.com、web.push.apple.comへHTTPのリクエストを発行することによって実施されています。

発行されたHTTPリクエストを確認することで、APEXからプッシュ通知が行われたかどうか確認できます。発行されたHTTPリクエストは、APEX_WEBSERVICE_LOGから確認します。

select id, url, http_method, status_code, to_char(request_date, 'RR/MM/DD HH24:MI:SS') request_date from apex_webservice_log order by request_date desc


apex.oracle.comでは、2分毎に通知を処理しているようです。そのため、プッシュ通知を実行して受信するまでに、最大で2分の遅延が発生します。

プッシュ通知の要求が成功していれば、HTTPのステータス・コードは200番台の値になります。

HTTPリクエストが成功しているにもかかわらず、プッシュ通知が受信できない場合、まずはデバイス側で通知が許可されているか確認します。

Google Chromeの場合は設定のプライバシーとセキュリティのサイトの設定に含まれる、apex.oracle.comの通知の設定を確認します。


iOSの場合は設定アプリの通知より、プッシュ通知(ホーム・ページにインストールしたアプリの名前です)を探します。



プッシュ通知の資格証明


プッシュ通知を組み込んでいるアプリケーションの、共有コンポーネントのプログレッシブWebアプリケーションのプッシュ通知のセクションは以下のようになっています。

アプリケーションにプッシュ通知を組み込む際に、Web資格証明が自動的に生成されてプッシュ通知の資格証明として設定されています。


ワークスペース・ユーティリティのWeb資格証明からも、自動的に作成されたWeb資格証明を確認できます。


このアプリケーションをエクスポートし、再度インポートした際には、この資格証明がWeb資格証明として存在しているかどうか、存在していない場合は資格証明の再生成の実施を検討する必要があります。



APIによる通知


作成したアプリケーションプッシュ通知のコピーを作ります。

タスクのこのアプリケーションをコピーを実行します。


新規アプリケーション名はプッシュ通知 - APIとします。

次へ進みます。


アプリケーションのコピーを実行します。


アプリケーションのコピーが作成されます。

ホーム・ページをページ・デザイナで開き、プロセスプッシュ通知を選択します。

識別のタイプをコードを実行に変更し、ソースのPL/SQLコードとして以下を記述します。p_application_idには、コピー元であるアプリケーションのIDを指定します。
begin
    apex_pwa.send_push_notification(
        p_application_id => [コピー元のアプリケーションID]
        ,p_user_name => :P1_PUSH_TO
        ,p_title => :P1_TITLE
        ,p_body => :P1_MESSAGE
    );
end;

以上で、APIによるプッシュ通知ができるようになりました。プロセス・タイプがプッシュ通知の送信の場合、通知の送信先は同じアプリケーションでしたが、APIの場合は異なるアプリケーションに通知できます。

APIによるプッシュ通知を送信するアプリケーションは、プログレッシブWebアプリケーションが無効でも、通知を送信できます。



Oracle APEX 23.1の新機能、プッシュ通知の紹介は以上になります。

Oracle APEXのアプリケーション作成の参考になれば幸いです。

完