นี่เป็นครั้งแรกของฉันที่ใช้ FCM
ฉันดาวน์โหลดตัวอย่างจากfirebase / quickstart-androidและติดตั้ง FCM Quickstart แต่ฉันไม่สามารถรับโทเค็นจากบันทึกได้แม้แต่กดปุ่มLOG TOKENในแอป
จากนั้นฉันพยายามส่งข้อความด้วยคอนโซล Firebase และตั้งเป้าหมายชื่อแพ็กเกจแอปของฉัน ฉันได้รับข้อความเข้า
อยากทราบว่า FCM ใช้ได้ไหม GCM ทุกอย่างโอเค
วิธีการแก้:
เนื่องจากฉันไม่ใช่นักพัฒนา Android เป็นเพียงนักพัฒนาแบ็กเอนด์ ฉันจึงต้องใช้เวลาพอสมควรในการแก้ไข ในความคิดของฉันมีข้อบกพร่องบางอย่างในแอปตัวอย่าง
รหัส:
RegistrationIntentService.java
public class RegistrationIntentService extends IntentService {
private static final String TAG = "RegIntentService";
public RegistrationIntentService() {
super(TAG);
}
@Override
protected void onHandleIntent(Intent intent) {
String token = FirebaseInstanceId.getInstance().getToken();
Log.i(TAG, "FCM Registration Token: " + token);
}
}
MyFirebaseInstanceIDService.java
public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {
private static final String TAG = "MyFirebaseIIDService";
/**
* Called if InstanceID token is updated. This may occur if the security of
* the previous token had been compromised. Note that this is called when the InstanceID token
* is initially generated so this is where you would retrieve the token.
*/
// [START refresh_token]
@Override
public void onTokenRefresh() {
// Get updated InstanceID token.
// String refreshedToken = FirebaseInstanceId.getInstance().getToken();
// Log.d(TAG, "Refreshed token: " + refreshedToken);
//
// // TODO: Implement this method to send any registration to your app's servers.
// sendRegistrationToServer(refreshedToken);
//
Intent intent = new Intent(this, RegistrationIntentService.class);
startService(intent);
}
// [END refresh_token]
/**
* Persist token to third-party servers.
* <p>
* Modify this method to associate the user's FCM InstanceID token with any server-side account
* maintained by your application.
*
* @param token The new token.
*/
private void sendRegistrationToServer(String token) {
// Add custom implementation, as needed.
}
}
เพิ่มสิ่งนี้ใน MainActivity.java
Intent intent = new Intent(this, RegistrationIntentService.class);
startService(intent);
หลังจากทำด้านบน, คุณจะได้รับ Token ใน Logcat แต่ในที่สุดฉันก็พบวิธีที่สะดวกที่จะได้รับ เพียงใช้โหมดดีบักเพื่อติดตั้งแอปตัวอย่างและคุณจะได้รับโทเค็นเมื่อติดตั้งครั้งแรก
แต่ฉันไม่รู้ว่าทำไมมันไม่สามารถพิมพ์บันทึกเมื่อฉันติดตั้งได้ อาจจะเกี่ยวข้องกับระบบมือถือ
แล้วทำไมฉันไม่ได้รับการแจ้งเตือน FirebaseMessagingService.onMessageReceivedไม่ได้เรียกsendNotification