【发布时间】:2016-11-17 02:53:08
【问题描述】:
我想在应用打开时发送令牌代码。我不想发送新令牌,只发送相同的令牌。这段代码工作正常,但只是第一次。
public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {
@Override
public void onTokenRefresh() {
String token = FirebaseInstanceId.getInstance().getToken();
registerToken(token);
Log.d("TOKEN", token);
}
private void registerToken(String token){
OkHttpClient client = new OkHttpClient();
RequestBody body = new FormBody.Builder()
.add("token", token)
.build();
Request request = new Request.Builder()
.url("url")
.post(body)
.build();
try {
client.newCall(request).execute();
} catch (IOException e) {
e.printStackTrace();
}
}}
我知道onTokenRefresh 仅在安装应用程序时启动。当我第一次、第二次、3. 4. 等打开我的应用程序时,如何将令牌发送到服务器。
我尝试将此代码添加到我的活动中,但应用程序未运行。给我一个错误
很遗憾(应用名称)已停止。
我已将此代码添加到 onCreate 的主要活动中
String token = FirebaseInstanceId.getInstance().getToken();
registerToken(token);
在这段代码之后
private void registerToken(String token){
OkHttpClient client = new OkHttpClient();
RequestBody body = new FormBody.Builder()
.add("token", token)
.build();
Request request = new Request.Builder()
.url("url")
.post(body)
.build();
try {
client.newCall(request).execute();
} catch (IOException e) {
e.printStackTrace();
}
}}
对不起,我的英语不好。
编辑:我的 MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
我的 FirebaseInstanceIDService.java
public class FirebaseInstanceIDService extends FirebaseInstanceIdService {
@Override
public void onTokenRefresh() {
String token = FirebaseInstanceId.getInstance().getToken();
registerToken(token);
Log.d("TOKEN", token);
}
private void registerToken(String token){
OkHttpClient client = new OkHttpClient();
RequestBody body = new FormBody.Builder()
.add("Token", token)
.build();
Request request = new Request.Builder()
.url("url")
.post(body)
.build();
try {
client.newCall(request).execute();
} catch (IOException e) {
e.printStackTrace();
}
}
}
编辑 2: 我认为这段代码在 mainactivity.java 中不起作用
Request request = new Request.Builder()
.url("url")
.post(body)
.build();
当我将此代码添加到 mainactivity 时,我的应用程序崩溃了。
完整代码是
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String token = FirebaseInstanceId.getInstance().getToken();
registerToken(token);
Log.d("TOKEN", token);
}
private void registerToken(String token){
OkHttpClient client = new OkHttpClient();
RequestBody body = new FormBody.Builder()
.add("token", token)
.build();
Request request = new Request.Builder()
.url("url")
.post(body)
.build();
try {
client.newCall(request).execute();
} catch (IOException e) {
e.printStackTrace();
}
}
}
如何使用 AsyncTask 发送数据?
【问题讨论】:
-
请添加堆栈跟踪以便更好地调试
-
检查我的更新答案
标签: android firebase firebase-cloud-messaging