現代のユーザーは、新しいメールが届くと即座に通知が表示されることを期待しています。4D 21 R3 では、IMAP IDLE 通知のサポートが導入され、アプリケーション内でリアルタイムにメールの受信状況を把握できるようになりました。定期的な同期だけに頼るのではなく、メールボックスに変化があった際に即座に対応できるようになりました。
IMAPTransporter の IMAP IDLE サポートによって、4Dアプリケーションはメールボックスの通知に対してサブスクライブできるようになります。「変更はありますか?」と問い合わせる代わりに、サーバーから「今、変更がありました」と教えてくれる様になるのです。
これは単なる新着メールの通知に止まりません。以下のようなイベントにも対応が可能です:
- 新しいメールの作成
- メッセージの削除
- フラグの変更 (既読への変更など)
- メールボックス状態の変更
メール通知をサポートするため、4D の IMAP機能が拡張され、IMAP New transporter コマンドに新しい listener パラメーターが追されました。この新しい listener オブジェクトを使って、デベロッパーはコールバック関数を登録することができます。
サポートされる通知イベント
parameter.listenerオブジェクトは、以下のコールバックをサポートしています:
- listener.onMailCreated(): 現在のメールボックスで新しいメッセージが検出されたときにトリガーされます。
- listener.onMailDeleted(): メッセージが完全に削除されたときにトリガーされます。
- listener.onFlagsModified(): メッセージのフラグが変更されたとき (例: 既読マークなど) にトリガーされます。
通知の開始と停止
4D.IMAPTransporter オブジェクトには、通知のライフサイクルを制御する notifier プロパティが用意されています:
- notifier.start(): サーバー通知にサブスクライブし、IMAP 通知機能を有効にします。
- notifier.stop(): サーバーへのサブスクリプションと IMAP 通知機能を停止します。
たとえば、以下のように、メールリスナーを一元管理するクラスを作成できます:
// Class IMAPListener
// サーバー上で新しいメールが作成されたときにトリガーされます
Function onMailCreated($transporter : 4D.IMAPTransporter; $event : Object)
ALERT("新着メールがあります!")
// メールが削除されたときにトリガーされます
Function onMailDeleted($transporter : 4D.IMAPTransporter; $event : Object)
ALERT("メッセージが削除されました")
// フラグが変更された (既読/未読など) ときにトリガーされます
Function onFlagsModified($transporter : 4D.IMAPTransporter; $event : Object)
ALERT("フラグが変更されました")
そして、コード内で必要になったときに通知機能を起動できます:
var $parameter:={}
$parameter.authenticationMode:=IMAP authentication OAUTH2 // 認証の OAuth2 を使います
$parameter.host:="Outlook.office365.com" // IMAP サーバーホスト
$parameter.port:=993 // IMAP SSL ポート
$parameter.accessTokenOAuth2 := $myToken // OAuth サーバーから取得したトークン
$parameter.user:="myadress@email.com" // ユーザーのメールアドレス
// リスナーの初期化
$parameter.listener :=cs.IMAPListener.new()
var $myTransporter:=IMAP New transporter($parameter)
// 通知機能を有効にします
$myTransporter.notifier.start()
まとめ
IMAP New transporter に IMAP IDLE 通知が統合されたことで、4Dアプリケーションはメール同期においてリアルタイムかつイベント駆動型のアプローチを採用できるようになりました。この機能強化により、ユーザーが普段使っているメッセージングツールと同様の、シームレスな体験を 4D ソリューションで提供できるようになります。
現在、この投稿へのコメント機能は利用できません。