مدیریت رویدادها

انتشار رویداد با داده‌های دلخواه

با متدهای زیر می توانید رویداد های داخل برنامه را منتشر کنید:

public void publishEvent(final String event, final JSONObject data)
public void publishEvent(final String event, final JSONObject data, final boolean live)
public void publishEvent(final String event, final JSONObject data,
final boolean live, final boolean stateful)

نکته : پارامتر ورودی live به این معناست که کاربرانی که به چابک متصل هستند این رویداد را دریافت خواهند نمود.

می توانید با استفاده از متدهای فوق یک رویداد بانام event که یک رشته متنی می باشد را با داده ای از نوع JSONObject منتشر کنید، مانند نمونه زیر:

try {

    JSONObject data = new JSONObject();
    data.put("lat", location.getLatitude());
    data.put("lng", location.getLongitude());
    data.put("ts", location.getTime());
    AdpPushClient.get().publishEvent("geo", data, false, true);

    } catch (JSONException e) {
    Logger.e(TAG, "Cant publish geo location event ", e);
}

به کمک نمونه کد فوق با دریافت هر گزارش مکان می‌توانید موقعیت مکانی کاربر را ارسال نمایید. در نمونه فوق رویدادی بنام geo با داده‌هایی که در شیٔ data‌ بصورت یک JSONObject‌ قرار می‌گیرد، منتشر می‌شود.

دریافت رویداد

برای دریافت رویداد لازم است کلاس مورد نظر برای دریافت را بعنوان Listener‌ رویداد تعیین نمایید و با استفاده از متد subscribeEvent روی رویداد موردنظر subscribe کنید، به قطعه کد زیر توجه نمایید :

AdpPushClient.get().addListener(MyActivity.this);


chabok.subscribeEvent(EVENT_NAME, new Callback() {
    @Override
    public void onSuccess(Object value) {

    }

    @Override
    public void onFailure(Throwable value) {

    }
});

متد subscribeEvent با امضاهای زیر موجود است که بر اساس نیاز خود می‌توانید آن‌ها را فراخوانی نمایید:

public void subscribeEvent(String eventName, final Callback clbk)
public void subscribeEvent(String eventName, boolean live, final Callback clbk)
public void subscribeEvent(String eventName, String installationId, final Callback clbk)
public void subscribeEvent(final String eventName, final String installationId, final boolean live, final Callback clbk)

نکته : پارامتر ورودی live به این معناست که کاربرانی که به چابک متصل هستند این رویداد را دریافت خواهند نمود، مقدار installiationId نیز برابر شناسه منحصر به فرد دستگاه کاربر می‌باشد و از طریق متد getInstallationId به دست می‌آید.

در صورت استفاده از امضاهای حاوی installiationId تمامی رویدادهای مربوط به نام وارد شده به عنوان eventName که توسط آن دستگاه منتشر می‌شود را دریافت خواهید نمود.

پس از ثبت‌نام برای دریافت رویداد،‌با استفاده از متد onEvent ‌می‌توانید رویداد مورد نظر را دریافت کنید:

public void onEvent(final EventMessage message) {
        if (message != null ) {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Log.d(TAG, "run: onEvent" + message.getName());
                    
                    JSONObject data = message.getData();
                }
            });
        }
    }

داده ارسال شده توسط فرستنده بصورت یک JSONObject از متد getData قابل بازیابی است.

غیرفعال کردن دریافت رویداد

برای غیرفعال کردن دریافت رویداد کافی است متد unsubscribeEvent را که با دو امضای مختلف وجود دارد، برا اساس نیاز خود فراخوانی نمایید.


public void unsubscribeEvent(String eventName, final Callback clbk)
public void unsubscribeEvent(final String eventName, final String installationId, final Callback clbk)