在FC服务器中存储FCM注册令牌

时间:2017-03-05 20:45:07

标签: php android sql-server firebase firebase-cloud-messaging

我想将Firebase reg令牌存储在SQL数据库中,令牌出现在日志中,但不会发送到数据库。

这是我的“FirebaseInstanceIdService”类:

public class FirebaseInstanceIDService extends FirebaseInstanceIdService {
@Override
public void onTokenRefresh() {
    String token = FirebaseInstanceId.getInstance().getToken();
    Log.d("REG_TOKEN",token);
    sendToken(token);
}

private void sendToken(String token) {
    OkHttpClient client =  new OkHttpClient();
    RequestBody body = new FormBody.Builder()
            .add("Token",token)
            .build();
    Request request = new Request.Builder()
            .url("http://192.168.1.6/fcm/addtoken.php")
            .post(body)
            .build();
    try {
        client.newCall(request).execute();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
}

这是PHP脚本:

<?php
if (isset($_POST["Token"])) {
      $token=$_POST["Token"];
      $conn = mysqli_connect("localhost","root","","fcm");
      $q="INSERT INTO users (Token) Values ( '$token') ON DUPLICATE KEY UPDATE Token = '$token';";

  mysqli_query($conn,$q) or die(mysqli_error($conn));
  mysqli_close($conn);
}

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您的代码看起来很好。您没有收到任何结果的原因是因为您只在sendToken()中拨打onTokenRefresh()。此方法仅由specific scenarios触发,可能无法满足。

尝试在MainActivity的sendToken()方法中调用onCreate(),看看是否有令牌发送到您的服务器。