【问题标题】:Worklight 6.3 push notification via GCM does not reach android device通过 GCM 的 Worklight 6.3 推送通知未到达 android 设备
【发布时间】:2023-03-17 17:13:02
【问题描述】:

我正在 IBM Worklight 6.3 上开发应用程序,并且应用程序使用推送通知。该应用程序使用 IBM Websphere 应用程序服务器 8.5.5.0。以下是我们必须使推送通知工作的详细信息。

  1. 对于 android 代码,添加了 google server key 作为 API key 和 project number 作为 sender id。我也尝试过使用谷歌浏览器密钥,尽管 IBM 声明要使用服务器密钥,但之前的一些帖子已经建议了。
  2. 对于安卓清单,

    <uses-permission android:name="android.permission.GET_ACCOUNTS"/>  
    <uses-permission android:name="android.permission.WAKE_LOCK"/>  
    <permission android:name="com.POCMobileApp.permission.C2D_MESSAGE" android:protectionLevel="signature"/>  
    <uses-permission android:name="com.POCMobileApp.permission.C2D_MESSAGE"/>  
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>  
    
    <service android:name="com.POCMobileApp.GCMIntentService"/>  
    <receiver android:name="com.google.android.gcm.GCMBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND"> 
        <!-- Receive the actual message -->  
        <intent-filter> 
            <action android:name="com.google.android.c2dm.intent.RECEIVE"/>  
            <category android:name="com.POCMobileApp"/> 
        </intent-filter>  
        <!-- Receive the registration id -->  
        <intent-filter> 
            <action android:name="com.google.android.c2dm.intent.REGISTRATION"/>  
            <category android:name="com.POCMobileApp"/> 
        </intent-filter> 
    </receiver> 
    
  3. GCMIntentService 类已被声明为扩展

    package com.POCMobileApp;
    public class GCMIntentService extends com.worklight.androidgap.push.GCMIntentService {
    
    }</code>
    
  4. 定义了一个可以提交通知的适配器过程

    function sendBroadcastNotification(notificationText) {
    
    WL.Logger.info("Notification text -> " + notificationText);
    
    var notificationOptions = {};
    notificationOptions.message = {};
    notificationOptions.message.alert = notificationText;
    
    notificationOptions.settings = {};
    notificationOptions.settings.gcm = {};
    notificationOptions.settings.gcm.payload = {"custom":"data"};
    
    try {
        var timeOut = WL.Server.sendMessage("POCMobileApp", notificationOptions);
    }
    catch(e) {
        WL.Logger.info("Error encountered -> " + e);
    }
    
    return {
        result : "Notification sent to all users."
    };
    }
    
  5. 函数WL.Client.Push.onMessage的客户端实现

我正在调用适配器过程

https://myServername:9443/myApplication/invoke?adapter=PushNotificationAdapter&procedure=sendBroadcastNotification&parameters=%5B"test+notification"%5D

然后返回下面

/*-secure-
{"result":"Notification sent to all users.","isSuccessful":true}*/

调用过程没有错误,但订阅的设备上没有收到通知。从设备的logcat跟踪中,我了解到设备已与GCM服务器建立连接并且注册成功。以下是痕迹:

12-10 21:40:09.151: V/GCMBroadcastReceiver(18771): onReceive: com.google.android.c2dm.intent.REGISTRATION 12-10 21:40:09.151: V/GCMBroadcastReceiver(18771):GCM IntentService 类: com.POCMobileApp.GCMIntentService 12-10 21:40:09.151: V/GCMBaseIntentService(18771): 获取唤醒锁 12-10 21:40:09.156: V/GCMBaseIntentService(18771):意图服务名称: GCMIntentService-DynamicSenderIds-2 12-10 21:40:09.161: D/GCMBaseIntentService(18771):handleRegistration:registrationId = APA91bH-QI_73vpf5sqvuvdkqha9QFNzvKa5FZGhGh--taYs9I9WCEZMwUFTz837eJXTfF3I8NMFr7jDBIYlgUrgXreoUUAYej62VmFZZoRofLBSOc6f9rKnkvXsOR3GafwsrZnIjNWp, 错误 = null,未注册 = null 12-10 21:40:09.161: D/GCMRegistrar(18771):重置 com.POCMobileApp 12-10 的退避 21:40:09.161:V/GCMRegistrar(18771):在应用程序版本 1 上保存 regId 12-10 21:40:09.166:D/GCMIntentService(18771): GCMIntentService.on注册在GCMIntentService.java:81 :: WLGCMIntentService:在 GCM 服务器上注册,注册 id APA91bH-QI_73vpf5sqvuvdkqha9QFNzvKa5FZGhGh--

你能建议我哪里出错了吗?我也不清楚如何调用 WL.Server.sendMessage (在适配器级别)将建立与 GCM 服务器的连接,有人可以澄清一下吗?

编辑

我注意到每次调用适配器时 SystemErr.log 中都会出现以下错误

[12/14/15 12:33:44:452 EST] 00000074 SystemErr R java.util.MissingResourceException:找不到资源包 java.util.PropertyResourceBundle,密钥无法搭载 由于客户端发送的标头无效或不完整而导致的 configprofile [12/14/15 12:33:44:452 EST] 00000074 SystemErr R at java.util.ResourceBundle.getObject(ResourceBundle.java:404) [2015 年 12 月 14 日 12:33:44:452 EST] 00000074 SystemErr R at java.util.ResourceBundle.getString(ResourceBundle.java:364) [12/14/15 12:33:44:452 EST] 00000074 SystemErr R at com.worklight.common.i18n.MessageFormatter.format(MessageFormatter.java:111) [12/14/15 12:33:44:452 EST] 00000074 SystemErr R at com.worklight.common.i18n.MessageFormatter.format(MessageFormatter.java:89) [12/14/15 12:33:44:452 EST] 00000074 SystemErr R at com.worklight.common.log.WorklightServerLogger.warn(WorklightServerLogger.java:64) [12/14/15 12:33:44:452 EST] 00000074 SystemErr R at com.worklight.gadgets.serving.ClientConfigProfileServlet.piggybackConfigProfile(ClientConfigProfileServlet.java:238) [12/14/15 12:33:44:452 EST] 00000074 SystemErr R at com.worklight.gadgets.serving.InvokeProcServlet.service(InvokeProcServlet.java:82) [12/14/15 12:33:44:452 EST] 00000074 SystemErr R at javax.servlet.http.HttpServlet.service(HttpServlet.java:668) [12/14/15 12:33:44:452 EST] 00000074 SystemErr R at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1227) [12/14/15 12:33:44:452 EST] 00000074 SystemErr R at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:776) [12/14/15 12:33:44:452 EST] 00000074 SystemErr R at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:458) [12/14/15 12:33:44:452 EST] 00000074 SystemErr R at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178) [12/14/15 12:33:44:452 EST] 00000074 SystemErr R at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:136) [12/14/15 12:33:44:452 EST] 00000074 SystemErr R at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:97) [12/14/15 12:33:44:452 EST] 00000074 SystemErr R at com.worklight.core.auth.impl.AuthenticationFilter$1.execute(AuthenticationFilter.java:217) [12/14/15 12:33:44:452 EST] 00000074 SystemErr R at com.worklight.core.auth.impl.AuthenticationServiceBean.accessResource(AuthenticationServiceBean.java:76) [12/14/15 12:33:44:452 EST] 00000074 SystemErr R at com.worklight.core.auth.impl.AuthenticationFilter.doFilter(AuthenticationFilter.java:222) [12/14/15 12:33:44:452 EST] 00000074 SystemErr R at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195) [12/14/15 12:33:44:452 EST] 00000074 SystemErr R at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91) [12/14/15 12:33:44:452 EST] 00000074 SystemErr R at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:928) [12/14/15 12:33:44:452 EST] 00000074 SystemErr R at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1025) [12/14/15 12:33:44:452 EST] 00000074 SystemErr R at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3761) [12/14/15 12:33:44:452 EST] 00000074 SystemErr R at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:304) [12/14/15 12:33:44:452 EST] 00000074 SystemErr R at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:976) [12/14/15 12:33:44:452 EST] 00000074 SystemErr R at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1662) [12/14/15 12:33:44:452 EST] 00000074 SystemErr R at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:200) [12/14/15 12:33:44:452 EST] 00000074 SystemErr R at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:459) [12/14/15 12:33:44:452 EST] 00000074 SystemErr R at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:526) [12/14/15 12:33:44:452 EST] 00000074 SystemErr R at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:312) [12/14/15 12:33:44:452 EST] 00000074 SystemErr R at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:283) [12/14/15 12:33:44:452 EST] 00000074 SystemErr R at com.ibm.ws.ssl.channel.impl.SSLConnectionLink.determineNextChannel(SSLConnectionLink.java:1048) [12/14/15 12:33:44:453 EST] 00000074 SystemErr R at com.ibm.ws.ssl.channel.impl.SSLConnectionLink$MyReadCompletedCallback.complete(SSLConnectionLink.java:642) [12/14/15 12:33:44:453 EST] 00000074 SystemErr R at com.ibm.ws.ssl.channel.impl.SSLReadServiceContext$SSLReadCompletedCallback.complete(SSLReadServiceContext.java:1784) [12/14/15 12:33:44:453 EST] 00000074 SystemErr R at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175) [12/14/15 12:33:44:453 EST] 00000074 SystemErr R at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) [12/14/15 12:33:44:453 EST] 00000074 SystemErr R at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161) [12/14/15 12:33:44:453 EST] 00000074 SystemErr R at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138) [12/14/15 12:33:44:453 EST] 00000074 SystemErr R at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204) [12/14/15 12:33:44:453 EST] 00000074 SystemErr R at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775) [12/14/15 12:33:44:453 EST] 00000074 SystemErr R at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905) [2015 年 12 月 14 日 12:33:44:453 EST] 00000074 SystemErr R at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1862)

有关系吗?是否有可能消息没有形成并传输到 GCM ?

谢谢。

【问题讨论】:

  • 您好,我想您现在可以通过 Google 开发人员控制台“API 请求图表”查看您的呼叫是否到达 GCM 的天气。如果它尚未到达 GCM 服务器,则推送通知根本没有到达 GCM,因此问题出在您的 Worklight 服务器端。
  • 问题:1) 您是否以任何方式修改了 GCMIntentService 类?你有重写方法吗? 2) 更新帖子以包含您的客户端推送处理逻辑。
  • 广播通知功能现在可以使用了。我们进行了以下更改以使其正常工作 - 1. 打开网络端口。 2. 移除了只针对android项目的安全测试。此外,任何更改都必须重新启动应用服务器。
  • @MrinmoyKar,你能把它写成问题的答案而不是评论吗?

标签: android push-notification google-cloud-messaging ibm-mobilefirst


【解决方案1】:

用户不会发布来自 cmets 的答案...这里是:

广播通知功能现在可以使用。我们进行了以下更改以使其正常工作 - 1. 打开网络端口。 2. 移除了只针对android项目的安全测试。此外,必须重新启动应用服务器才能反映任何更改。

【讨论】:

    猜你喜欢
    • 2015-08-29
    • 1970-01-01
    • 1970-01-01
    • 2014-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多