使用 Codenameone 显示推送通知

Posted

技术标签:

【中文标题】使用 Codenameone 显示推送通知【英文标题】:display push notifications with Codenameone 【发布时间】:2015-12-28 21:42:35 【问题描述】:

我是代号一的初学者;我不知道如何发送推送通知并显示主题。我正在使用此代码:

public class PushDemo implements PushCallback 

    private Form current;
    public void init(Object context) 

     
     public void start() 
         if(current != null)
             current.show();
             return;
         
        new StateMachine("/theme");
     

     public void stop() 
        current = Display.getInstance().getCurrent();
     

     public void destroy() 

     

     public void push(String value) 
        Dialog.show("Push Received", value, "OK", null);
     

     public void registeredForPush(String deviceId) 
        Dialog.show("Push Registered", "Device ID: " + deviceId + "\nDevice Key: " +Push.getDeviceKey() , "OK", null);
     

     public void pushRegistrationError(String error, int errorCode) 
        Dialog.show("Registration Error", "Error " + errorCode + "\n" + error, "OK", null);
     


【问题讨论】:

为语法高亮添加了 Java 标签 你看过这个视频了吗? codenameone.com/… 【参考方案1】:

这里有一个 pushthru: https://www.codenameone.com/blog/building-a-chat-app-with-codename-one-part-6.html

首先您需要设置以下常量来实际注册/发送推送:

private static final String PUSH_TOKEN = "********-****-****-****-*************";
private static final String GCM_SENDER_ID = "99999999999999";
private static final String GCM_SERVER_API_KEY = "******************-********************";
private static final boolean ITUNES_PRODUCTION_PUSH = false;
private static final String ITUNES_PRODUCTION_PUSH_CERT = "https://domain.com/linkToP12Prod.p12";
private static final String ITUNES_PRODUCTION_PUSH_CERT_PASSWORD = "ProdPassword";
private static final String ITUNES_DEVELOPMENT_PUSH_CERT = "https://domain.com/linkToP12Dev.p12";
private static final String ITUNES_DEVELOPMENT_PUSH_CERT_PASSWORD = "DevPassword";

您错过了应该在 start() 方法末尾进行的注册调用:

Display.getInstance().callSerially(() -> 
    // registering for push after the UI appears
    Hashtable args = new Hashtable();
    args.put(com.codename1.push.Push.GOOGLE_PUSH_KEY, GCM_SENDER_ID);
    Display.getInstance().registerPush(args, true);
);

然后您可以使用以下方式向设备发送推送:

Push.sendPushMessage(PUSH_TOKEN, textToShowToTheUser + ";" + hiddenPayload,
                ITUNES_PRODUCTION_PUSH, GCM_SERVER_API_KEY, cert,pass, 3, pid);

【讨论】:

谢谢,现在当我发送推送时,第二个设备中不会显示此通知 它推送到单个特定设备。如果您想向所有设备发送推送,您的服务器将需要以 500 个批次循环通过设备并根据设备密钥发送推送。 我必须为 android 激活其他云消息传递功能?在文档中有:仅对代号一中的专业帐户启用推送通知 您需要一个专业帐户。您还需要激活 GCM 和 APNS 并为 APNS 生成正确的证书,上面链接的聊天教程将完成所有步骤 我想只用android测试推送通知,所以我认为没有必要拥有一个专业帐户,不是吗?我激活了GCM,当我发送推送消息时,我没有收到其他设备的任何通知,请问您有什么建议吗?!

以上是关于使用 Codenameone 显示推送通知的主要内容,如果未能解决你的问题,请参考以下文章

显示最后一个通知推送,我需要显示所有通知推送

避免在 Android 中使用通知推送从 GCM 显示自动通知

Android推送通知显示啥

是否可以选择 iOS 推送通知仅显示在通知中心?

系统不显示推送通知

控制屏幕上显示的 OneSignal 推送通知时间