我目前有一个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填充表格。这是一张图片:
问题是,在用户通过Android WebView登录网站之前,我无法获取user_id
。您可能猜到,这意味着我不知道哪个设备与哪个用户相关联。这是向某些用户发送推送通知的问题。
有人知道这个问题的解决方案吗?
注意:我已经讨论过制作原生Android应用程序并且不想这样做。我还想过简单地在Chrome或Firefox等本机网络浏览器中加载网站,但是,我也不想这样做。
想法:当用户登录网站并通过user_id
时,是否可以在Android应用程序中“触发”某个功能?
更多想法:我可以使用WebView的addJavascriptInterface()
完成此操作吗?
在评论中使用我的解决方案解决了它。我使用了函数addJavascriptInterface()
,它是Android WebView类的一部分。通过使用它,我能够在登录网站后回调我的Android应用程序。然后我调用我的API并传递用户ID和设备ID。