安卓WebView推送通知?

17

我需要通过Android Webview发送通知(不一定是推送通知)。在MDN上看到Notification API与Android Webview不兼容。我看到的其他API似乎都基于window.notification

有人知道是否存在可以通过Android Webview发送通知的API或JS吗?

我看到了6个月前的这篇帖子,除了模糊提到Firebase外,实际上并没有什么活动。那会有帮助吗?

感谢您的回答!

3个回答

21

文档:https://developer.android.com/training/notify-user/build-notification.html - Black

5

阅读将JavaScript代码绑定到Android代码的文档记录。

这使您能够使用JavaScript来触发Android代码的执行。

首先您需要在Android上注册Javascript接口,以便您可以从JavaScript触发Android代码。

JAVA

WebView webView = (WebView) findViewById(R.id.webview);
webView.addJavascriptInterface(new WebAppInterface(this), "Android");

定义一个方法,在JavaScript被调用时执行您的操作。在此示例中,显示一个Toast提示框。

public class WebAppInterface {
    Context mContext;

    /** Instantiate the interface and set the context */
    WebAppInterface(Context c) {
        mContext = c;
    }

    /** Show a toast from the web page */
    @JavascriptInterface
    public void showToast(String toast) {
        Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
    }
}

↑ 您需要更改该部分,以显示您的推送通知。↑

然后您可以像这样从JavaScript触发Android代码:

<input type="button" value="Say hello" onClick="showAndroidToast('Hello Android!')" />

<script type="text/javascript">
    function showAndroidToast(toast) {
        Android.showToast(toast);
    }
</script>

我自己没有尝试过。但我会尝试创建一个JavaScript方法,以特定的间隔向服务器发出Ajax请求,并检查是否有新的通知需要发送,如果是,则调用Android代码显示消息。

但是,请确保只显示一次通知...也许将包含通知ID的cookie设置为true,这样Android代码就不会再次触发。

例如,您需要将通知作为JSON格式的.json文件提供。您可以将该.json文件上传到Web服务器的某个位置。然后将内容传递给Android并相应地解析它。


1
这非常有用。感谢您提供这个。此链接https://developer.android.com/guide/webapps/webview#BindingJavaScript也可以用于完整和官方文档。 - Hemal
1
这是用于推送通知还是只是一个简单的提示消息?对于任何网站通知,通知中都会附带一个URL,这可能是基于图像的通知。 - Karan Sethi

3

一个简单的解决方案是使用JSInterface——用于webview与native通信的工具。教程

在JSInterface中传递所需的通知参数,然后使用Android系统通知API生成通知。


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