使用Firebase云消息传递的Android WebView

问题描述 投票:2回答:1

我目前有一个Android应用程序,可以在WebView中加载我的网站。

WebView browserView;
browserView.loadUrl(URL);

我还实施了Firebase云消息传递,因此我可以使用推送通知。

public class MyFirebaseInstanceIdService extends FirebaseInstanceIdService {
    @Override
    public void onTokenRefresh() {
        // Get updated InstanceID token.
        String refreshedToken = FirebaseInstanceId.getInstance().getToken();

        // Send the token to the server
        sendRegistrationToServer(refreshedToken);
    }

    private void sendRegistrationToServer(String refreshedToken) {
        try {
            URL url = new URL(URL + "/API.php");
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("POST");

            conn.setDoOutput(true);
            conn.setDoInput(true);
            DataOutputStream wr = new DataOutputStream(
                    conn.getOutputStream());
            wr.writeBytes("action=insertDeviceID&deviceID=" + refreshedToken);
            wr.flush();
            wr.close();

            InputStream is = conn.getInputStream();
            BufferedReader rd = new BufferedReader(new InputStreamReader(is));
            is.close();
            rd.close();
        } catch(Exception e) {}
    }
}

运行sendRegistrationToServer()时,我的API会使用当前Android设备的ID填充表格。这是一张图片:

enter image description here

问题是,在用户通过Android WebView登录网站之前,我无法获取user_id。您可能猜到,这意味着我不知道哪个设备与哪个用户相关联。这是向某些用户发送推送通知的问题。

有人知道这个问题的解决方案吗?

注意:我已经讨论过制作原生Android应用程序并且不想这样做。我还想过简单地在Chrome或Firefox等本机网络浏览器中加载网站,但是,我也不想这样做。

想法:当用户登录网站并通过user_id时,是否可以在Android应用程序中“触发”某个功能?

更多想法:我可以使用WebView的addJavascriptInterface()完成此操作吗?

javascript php android firebase firebase-cloud-messaging
1个回答
0
投票

在评论中使用我的解决方案解决了它。我使用了函数addJavascriptInterface(),它是Android WebView类的一部分。通过使用它,我能够在登录网站后回调我的Android应用程序。然后我调用我的API并传递用户ID和设备ID。

© www.soinside.com 2019 - 2024. All rights reserved.