【发布时间】:2014-06-16 14:18:59
【问题描述】:
我在我的 Worklight 测试应用程序中使用推送通知。我已通过 Worklight Adapter 进行了身份验证。但是通过这种方式,我总是收到 PushAdapter “No subscription found for user:: [sample_username]”的响应
设备已通过身份验证:
我的测试 Android 设备订阅了通知。
我的简单 AuthAdapter:
function onAuthRequired(headers, errorMessage) {
errorMessage = errorMessage ? errorMessage : null;
return {
authRequired: true,
errorMessage: errorMessage
};
}
function submitAuthentication(username, password) {
var userIdentity = {
userId: username,
displayName: username,
attributes: {
foo: "bar"
}
};
WL.Server.setActiveUser("AdapterAuthRealm", null);
WL.Server.setActiveUser("AdapterAuthRealm", userIdentity);
return {
authRequired: false
};
}
也许,我的推送通知服务代码将有助于帮助(Angular JS):
console.log(services.service('PushService'));
if (WL.Client.Push){
WL.Client.Push.onReadyToSubscribe = function(){
WL.Client.Push.registerEventSourceCallback(
"myPush",
"PushAdapter",
"PushEventSource",
angular.element(document.body).injector().get('PushService').pushNotificationReceived);
};
}
services.service('PushService', function($q) {
var self = this;
self.send = function(userID, text) {
console.info("PushService:: send ",userID, text);
var deferred = $q.defer();
if (typeof WL !== 'undefined') {
WL.Client.invokeProcedure({
adapter : 'PushAdapter',
procedure : 'submitNotification',
parameters : [userID, text]
},{
onSuccess: function(response) {
deferred.resolve(response);
console.log("PushService:: push response: ",response);
},
onFailure: function(response) {
deferred.reject();
}
});
} else {
deferred.reject();
console.warn("WL is undefined");
}
return deferred.promise;
};
self.isSupported = function() {
var isSupported = false;
if (WL.Client.Push){
console.log(WL.Client.Push);
isSupported = WL.Client.Push.isPushSupported();
}
return isSupported;
};
self.isSubscribed = function() {
var isSubscribed = false;
if (WL.Client.Push){
isSubscribed = WL.Client.Push.isSubscribed('myPush');
}
return isSubscribed;
};
self.subscribe = function() {
var deferred = $q.defer();
WL.Client.Push.subscribe("myPush", {
onSuccess: function(response) { console.info("Push:: subscribe success"); deferred.resolve(response); },
onFailure: function() { console.warn("Push:: subscribe failture"); deferred.reject(); }
});
return deferred.promise;
};
self.unsubscribe = function() {
var deferred = $q.defer();
WL.Client.Push.unsubscribe("myPush", {
onSuccess: function(response) { console.info("Push:: unsubscribe success"); deferred.resolve(response); },
onFailure: function() { console.warn("Push:: unsubscribe failture"); deferred.reject(); }
});
return deferred.promise;
};
self.pushNotificationReceived = function(props, payload) {
console.info("pushNotificationReceived invoked:: ", JSON.stringify(props), JSON.stringify(payload));
};
return self;
});
【问题讨论】:
标签: android push ibm-mobilefirst worklight-adapters worklight-server