-1

IBM Mobilefirst でトリガーを使用して HTTP アダプターを呼び出すことはできますか?

私はロケーションベースのサービスとプッシュ通知の統合部分に取り組んでいます。たとえば、使用がジオフェンチ領域に入るとき、プッシュアダプターを呼び出してモバイルデバイスに通知を送信する必要があります。

ジオフェンス コード:

dwellArea: { // alert when we have stayed in the vicinity for 3 seconds
                        type: "DwellInside",
                        circle: {
                            longitude: pos.coords.longitude,
                            latitude: pos.coords.latitude,
                            radius: 50
                        },
                        dwellingTime: 3000,
                        callback: function() {
                            alert('Still in the vicinity');

ここで、Http アダプターの呼び出し、つまりプッシュ アダプターを呼び出すことができます。以下を参照してください。

                            WL.Client.transmitEvent({ event: 'dwell inside area'}, true);
                        }
                    }

プッシュ通知コード:

var invocationData = {adapter : "PushAdapter",
                                       procedure : "submitNotification",
                                       parameters : [ "Vinod", "Hello This is Push notification" ]
                                     };
                            var options = {
                                    onSuccess : onGetAccountsSuccess,
                                    onFailure : onGetAccountsFailed,
                                    timeout : 30000
                                };
                            WL.Client.invokeProcedure(invocationData, options);

Geofenchコーディングのこのコールバックでこのプッシュ通知コードを直接呼び出すことができますか、またはこれに対する代替ソリューションはありますか.

参照リンク:

ジオフェンス: https://developer.ibm.com/mobilefirstplatform/documentation/getting-started-6-3/advanced-topics/location-services-hybrid-applications/

プッシュ通知: https://developer.ibm.com/mobilefirstplatform/documentation/getting-started-6-3/notifications/push-notifications-hybrid-applications/#whatIsPushNotifications

4

2 に答える 2

1

質問がはっきりしません...次のようなものを作成してみませんか

function sendNotification() {
   // your push code...
}

そして、alert()使用の代わりにsendNotification();?
あなたはそれを試しましたか?

于 2015-12-09T05:06:20.040 に答える
1

ここにはさまざまなオプションがあります。イベントを送信するだけの場合は、コールバックを宣言する必要はありません。トリガー定義にイベントを追加するだけです。例えば:

      eventToTransmit: { 
         event: { 
            field1: "data1",
            field2: ["data2", "data3"]
         },
         transmitImmediately: true 
      }

これにより、イベント (および以前に送信されなかったイベント) がすぐに送信されることに注意してください。動的データがある場合は、コールバックが必要であり、代わりに WL.Client.transmitEvent API を使用します。どちらの場合も、通信に問題がある場合は、イベント送信ポリシーに従って再試行します。サーバー側アダプターでイベントを処理します。イベントを使用すると、クライアント側のロジックを更新する必要なく、サーバー側のロジックを個別に更新できることに注意してください。また、相互に呼び出しを行わなくても、いくつかの異なるアダプターからのイベントを処理できます。

または、アダプターでプロシージャーを呼び出す呼び出しを実行することもできます。その場合、通信の問題があれば、失敗ハンドラーを宣言し、そこに再試行ロジックを実装する必要があります。

于 2015-12-09T08:08:33.760 に答える