Услуга Push не регистрируется на кривой Blackberry - PullRequest
0 голосов
/ 01 апреля 2011

По какой-то причине я продолжаю получать PushApplicationStatus.STATUS_NOT_Rurable, когда я пытаюсь зарегистрироваться для push-сервисов на кривой ежевики.Он отлично работает на факеле, шторме, но с таким большим количеством проблем на жирном шрифте и кривой.

Вот код того, как мне зарегистрироваться для push-сервисов:

int port = Constant.Net.PUSH_PORT;
    String appId = Constant.Net.APP_PUSH_ID;
    String bpasUrl = Constant.Net.BPAS_URL;
    ApplicationDescriptor ad = ApplicationDescriptor.currentApplicationDescriptor();
    byte serverType = PushApplicationDescriptor.SERVER_TYPE_BPAS;

    PushApplicationDescriptor pad = new PushApplicationDescriptor(appId, port, bpasUrl, serverType, ad);
    PushApplicationStatus status = PushApplicationRegistry.getStatus(pad);
    byte bstatus = status.getStatus();

    if (bstatus == PushApplicationStatus.STATUS_ACTIVE)
    {
        L.devout("BpasProtocol: already registered");
        AlertDialog.alert(LH.getString(LH.LBL_PUSH_REGISTERED));
        return;
    }
    else if (bstatus == PushApplicationStatus.STATUS_PENDING)
    {
        L.devout("BpasProtocol: status pending");
        AlertDialog.alert(LH.getString(LH.LBL_PUSH_REGISTERED));
        return;
    }
    else if (bstatus == PushApplicationStatus.REASON_REJECTED_BY_SERVER )
    {
        L.devout("BpasProtocol: rejected by server");
        AlertDialog.alert("REASON_REJECTED_BY_SERVER");
        return;
    }
    else if (bstatus == PushApplicationStatus.REASON_INVALID_PARAMETERS )
    {
        L.devout("BpasProtocol: REASON_INVALID_PARAMETERS");
        AlertDialog.alert("REASON_INVALID_PARAMETERS");
        return;
    }
    else if (bstatus == PushApplicationStatus.REASON_SIM_CHANGE )
    {
        L.devout("BpasProtocol: REASON_SIM_CHANGE");
        AlertDialog.alert("REASON_SIM_CHANGE");
        return;
    }
    else if (bstatus == PushApplicationStatus.REASON_NETWORK_ERROR )
    {
        L.devout("BpasProtocol: REASON_NETWORK_ERROR");
        AlertDialog.alert("REASON_NETWORK_ERROR");
        return;
    }
    else if (bstatus == PushApplicationStatus.REASON_API_CALL )
    {
        L.devout("BpasProtocol: REASON_API_CALL");
        AlertDialog.alert("REASON_API_CALL");
        return;
    }
    else if (bstatus == PushApplicationStatus.STATUS_NOT_REGISTERED )
    {
        L.devout("BpasProtocol: Status not registered");
        AlertDialog.alert("STATUS_NOT_REGISTERED");

        return;
    }
    else if (bstatus == PushApplicationStatus.STATUS_FAILED )
    {
        L.devout("BpasProtocol: Status failed");
        return;
    }
    else
    {
        L.devout("BpasProtocol: scheduling registration");

        PushApplicationRegistry.registerApplication(pad);
        AlertDialog.alert(LH.getString(LH.LBL_PUSH_REGISTERED));
    }

Любая помощь будетвысоко ценится, поскольку для получения ответа от RIM требуется вечность.

1 Ответ

0 голосов
/ 16 июня 2011

PushApplicationStatus.getStatus () возвращает один из STATUS_PENDING, STATUS_ACTIVE, STATUS_FAILED или STATUS_NOT_Rurable.

Не думаю, что вам следует сравнивать это значение состояния с какой-либо из констант REASON_ *.

Также, если статус STATUS_NOT_Rurable, вам следует попытаться зарегистрировать свое приложение! Ваш код выполняет регистрацию в else-ветви, которая никогда не должна быть достигнута, так как одно из четырех значений STATUS_ * должно совпадать.

Взгляните на пример приложения с поддержкой push-push, поставляемого с BlackBerry Push Service SDK. Полный исходный код вы найдете в файле jar: sample-push-enabled-app-1.0.1.11-sources.jar

...