Codename One Android推送通知立即被解除的问题

3
我正在从我的 Web 应用程序发送推送通知,它在 IOS 上表现良好,但在 Android 上,通知只能在顶部闪烁几毫秒,没有通知预览列表中的通知。我已经按照开发者指南(Android Bureau)向谷歌注册了应用程序。如果我在对话框中显示它,我可以看到应用程序收到了通知。我只想让系统通知保持不变,这样用户就知道他们需要检查应用程序。
应用程序代码:
public void start() {
    if(current != null){
        current.show();
        return;
    }
    Display.getInstance().callSerially(() -> {
        Display.getInstance().registerPush();
    });

    // show the splash screen
    splashScreen.show();
}

public void stop() {
    current = Display.getInstance().getCurrent();
    if(current instanceof Dialog) {
        ((Dialog)current).dispose();
        current = Display.getInstance().getCurrent();
    }
}

public void destroy() {
}

@Override
public void push(String value) {
    //Dialog.show("push", "value:" + value, "OK", "Cancel");
}

@Override
public void registeredForPush(String deviceId) {
    //String pushKey = Push.getPushKey();
    //System.out.println("deviceId:" + deviceId + ", pushKey:" + pushKey);
}

@Override
public void pushRegistrationError(String error, int errorCode) {
    //System.out.println("Unable to register push:" + errorCode + ":" + error);
}
2个回答

0

如果应用程序正在运行,则推送将被隐式地关闭,这对于Android和iOS都是如此。如果应用程序在后台或未运行,则推送应保留在托盘中,直到被点击。


这个问题只会在 Android 应用程序在后台运行时发生。当 IOS 应用程序在后台运行时,通知会按照您描述的方式正确地运作。 - Wade Girard
还有什么想法,为什么它表现得像应用程序在前台一样,而实际上并不是吗?这是我们发布的最后一个重大障碍。 - Wade Girard
我们的应用程序没有发生这种情况,所以让我们试着理解其中的差异。这是否发生在多个设备上?您是否使用任何cn1libs?您是否有后台进程类型?还有其他您能想到的吗? - Shai Almog
我正在使用指纹cn1lib。我只在一个Android设备和一个iOS设备上测试了应用程序。我可以尝试找到另一个Android设备进行测试。问题是,我需要在“push”回调中做任何事情才能获得此功能吗?似乎不需要,因为应用程序在后台或未运行。该应用程序没有后台进程。 - Wade Girard
我有一份包含支持人员故障排除信息的文件,根据他们的说法,该应用程序不与该手机兼容。 我应该将该文件发送到哪个邮箱? - Wade Girard
显示剩余3条评论

0
我们发现手机上有一个名为“安全360”的安全应用程序正在阻止通知。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接