Windows Phone 8: проблема с получением необработанных push-уведомлений

Я не могу получать необработанные уведомления на свой WindowsPhone8.

Подписано: https://github.com/barryvdh/PushPlugin/#uccb-wp8-only

Возможность получать всплывающие уведомления. В моем приложении происходит переключение, как показано ниже.

Случай 1: Если я прокомментирую, ecb сможет получить как raw, так и toast, но не канал uri.

Случай 2: если я не буду комментировать, ecb сможет получить тост и канал uri, но не сырой

Мой код выглядит следующим образом:

if (device.platform == "Win32NT") {
        console.log("called");

            pushNotification.register(
                channelHandler,
                errorHandler,
                {
                    "channelName": "channelName",
                    "ecb": onNotificationWP8,
                    "uccb": channelHandler,
                    "errcb": jsonErrorHandler
                });
        }
        else {
            console.log("not called");
        }
    }


function channelHandler(event) {
    var uri = event.uri;
    console.log("UUUUURRRRRRRRRRRIIIIIIIII  :" + uri);
}

function errorHandler(e) {
}

function jsonErrorHandler(error) {
    $("#app-status-ul").append('<li style="color:red;">error:' + error.code + '</li>');
    $("#app-status-ul").append('<li style="color:red;">error:' + error.message + '</li>');
}

function onNotificationWP8(e) {
    console.log("notification called");
    if (e.type == "toast" && e.jsonContent){
        pushNotification.showToastNotification(successHandler, errorHandler,
        {
            "Title": e.jsonContent["wp:Text1"], "Subtitle": e.jsonContent["wp:Text2"], "NavigationUri": e.jsonContent["wp:Param"]
        });
    }

    if (e.type == "raw" && e.jsonContent) {
        alert(e.jsonContent.Body);
    }
}

Пытался с помощью методов ошибок и следов. Укажите, что могло пойти не так.


person RAJENDRA PRASAD S.J    schedule 15.02.2016    source источник
comment
Похоже, вы пытаетесь использовать Push с помощью пользовательского плагина и замечаете проблему. Видите ли вы проблемы с проектом Worklight/MobileFirst, использующим встроенную функцию push?   -  person Vivin K    schedule 15.02.2016
comment
Я использую версию Worklight 6.1.0.02-20151114-1310.   -  person RAJENDRA PRASAD S.J    schedule 15.02.2016
comment
Как опубликованная проблема связана с Worklight? Несмотря на то, что поддержка Push-уведомлений доступна из коробки с Worklight, вы используете настраиваемый плагин. Если вы используете образец здесь: public.dhe .ibm.com/software/mobile-solutions/worklight/docs/ и не добавлять никаких пользовательских плагинов, можете ли вы получать необработанные уведомления?   -  person Vivin K    schedule 15.02.2016
comment
Я не получаю необработанных уведомлений, но могу получить тост. Я использовал пользовательский плагин, потому что мне нужно только получить uri канала, чтобы отправить его на сервер и обработать полученное уведомление на стороне клиента. Я не хотел использовать какой-либо адаптер. Если рабочий свет поможет мне без каких-либо исправлений, это хорошо. Приведенная выше ссылка, которой вы поделились, содержит среду Android, на самом деле я ожидаю среду Windows.   -  person RAJENDRA PRASAD S.J    schedule 15.02.2016
comment
добавить среду WindowsPhone   -  person Vivin K    schedule 15.02.2016
comment
Спасибо, Вивин. Но мне трудно в совместном проекте достичь того, чего я хочу. Есть ли какой-либо API Worklight для получения URI канала для Windows Phone 8? Без адаптера нельзя? Нужно ли мне поднимать PMR для этого? Не стесняйтесь предлагать. Спасибо.   -  person RAJENDRA PRASAD S.J    schedule 15.02.2016


Ответы (2)


Наблюдаемая проблема, похоже, вообще не связана с Worklight. Судя по описанию и фрагменту кода, вы полностью обходите клиентский SDK и сервер Worklight и используете собственный подключаемый модуль Cordova Push. Работа пользовательского плагина в вашем приложении должна быть проанализирована, чтобы понять различия в поведении.

Поскольку вы вообще не используете Worklight Push, вы можете попробовать отключить его и проверить, поможет ли это в вашем случае.

Для этого перейдите к файлу config.xml. Он будет находиться в папке apps/YourAppName/WindowsPhone8/native/Resources.

Искать :

<feature name="Push">
    <param name="wp-package" value="Push" />
</feature>

Измените это на:

<feature name="Push">
    <param name="wp-package" value="Push" />
    <param name="onload" value="false" />
</feature>

По запросу относительно Worklight API:

Не существует API Worklight, которые возвращают URI канала. При использовании Worklight SDK for Push все это делается автоматически и скрыто от пользователя. Даже при наличии Push-адаптера невозможно получить URI канала, поскольку для получения этой информации не опубликованы API-интерфейсы.

person Vivin K    schedule 15.02.2016
comment
Спасибо, Вивин. К сожалению, в моем случае отключение Worklight Push не помогло. Ты прав. Рабочий свет меня здесь не останавливает. Нужно выяснить, что пошло не так в пользовательском плагине. - person RAJENDRA PRASAD S.J; 16.02.2016

Наконец, это было решено путем добавления Coding4Fun.Toolkit.Controls.dll.

И некоторое обновление кода в PushPlugin.cs

используя Coding4Fun.Toolkit.Controls; используя System.Windows.Threading;

void PushChannel_ShellToastNotificationReceived (отправитель объекта, NotificationEventArgs e) {

        Deployment.Current.Dispatcher.BeginInvoke(() =>
        {
            string msg = string.Empty;
            foreach (var item in e.Collection)
            {
                if (item.Key == "wp:Text1")
                {
                    msg = item.Value;
                }
            }

            MessageBox.Show(msg, "Notification", MessageBoxButton.OK);

        });
    }

От всего сердца благодарю Раджита, который помог мне воплотить это в жизнь.

person RAJENDRA PRASAD S.J    schedule 26.02.2016