【问题标题】:How to launch android app only when onesignal device id is ready?仅当 onesignal 设备 ID 准备好时,如何启动 android 应用程序?
【发布时间】:2021-11-25 22:46:19
【问题描述】:

我正在尝试使用 onesignal 来实现 webview 以获取通知。 我需要通过将 JavaScript 代码插入到我的 webview 页面来将一个信号设备 ID 传递给服务器(我为 LOGIN 按钮分配了一个将设备 ID 发送到服务器的 JS 函数)。为此,我使用以下代码:

public void onPageFinished(WebView view, String url) {

// get device id
                OSDeviceState deviceState = OneSignal.getDeviceState();
                String oneSignalDeviceID = deviceState != null ? deviceState.getUserId() : null;

// create string with oneSignalDeviceID 
                String jsCodeInsert =
                        "javascript:document.getElementById('wp-submit').onclick = function() { jQuery.post( ajax_object.ajax_url, {action: 'onesignal_add', id: '" + oneSignalDeviceID + "', mode: 'mymode'}, function( response ) {console.log(response);});} ";

                     view.loadUrl(jsCodeInsert);
            }

问题
通常oneSignalDeviceID 包含null 值而不是正确的ID。据我了解,当它包含null 时,onesignal 并没有为用户创建ID。

在这种情况下,最简单的解决方案是什么? 我认为最简单的做法是在 oneSignalDeviceID 准备好之前(不是 null)启动 webview,但是,我不知道该怎么做。

【问题讨论】:

    标签: android webview push-notification onesignal


    【解决方案1】:

    不幸的是,这并不总是时间问题。有时它需要应用程序第二次启动 OneSignal 才能获取玩家 ID。 有些用户会手动禁用通知。 在我们的应用程序中,我们一直检查 OneSignal 用户 ID,直到我们得到它,我们有 updateOneSignalID API。 通常它不会超过应用程序的第二次运行。

    【讨论】:

    • 这听起来像是故意忽略竞争条件。
    猜你喜欢
    • 2020-02-10
    • 1970-01-01
    • 2015-10-28
    • 2020-02-25
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-22
    • 1970-01-01
    相关资源
    最近更新 更多