我的MessageRecieved方法永遠不會在我的Android應用程序中被解僱,儘管服務正在運行並且清單似乎沒有問題。我們通過Firebase控制檯發送消息,似乎沒有任何事情發生。此外,onToken刷新方法只會被調用一次,這是您第一次安裝應用程序時。之後,它永遠不會被調用。我已經在前臺和後臺測試了應用程序,但仍未調用onMessageRecieve方法。onMessageRecieved從未解僱Firebase通知
這裏是我的清單
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.beatrice.mylocalbartender">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme"
tools:node="replace"
tools:replace="android:supportsRtl">
<!-- meta data to connect ot the facebook api -->
<service
android:enabled="true"
android:exported="true"
android:name=".messaging.MyFirebaseInstanceIdService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>
<service
android:enabled="true"
android:exported="true"
android:name=".messaging.MyFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_
EVENT"/>
</intent-filter>
</service>
<meta-data
android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="@drawable/bt_ic_android_pay" />
<!-- Set color used with incoming notification messages. This is used when no color is set for the incoming
notification message. for more. -->
<meta-data
android:name="com.google.firebase.messaging.default_notification_color"
android:resource="@color/colorAccent" />
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
<meta-data android:name="com.google.android.gms.wallet.api.enabled" android:value="true"/>
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
<uses-permission android:name="android.permission.INTERNET" />
<activity android:name=".messaging.MainActivity"></activity>
<activity android:name=".activity.GmailSignInActivity">
</activity>
<activity android:name=".activity.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- activity for brain tree, please do not touch -->
<activity
android:name="com.braintreepayments.api.BraintreeBrowserSwitchActivity"
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="${applicationId}.braintree" />
</intent-filter>
</activity>
<!-- This activity will be removed in the future -->
<activity
android:name=".activity.FacebookLogInActivity"
android:label="@string/title_activity_facebook_log_in"
android:theme="@style/AppTheme.NoActionBar">
</activity>
<!-- to launch facebook activity - please do not touch -->
<activity android:name="com.facebook.FacebookActivity"
android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:label="@string/app_name" />
<activity enter code hereandroid:name="com.braintreepayments.api.dropin.DropInActivity"></activity>
<activity android:name="com.braintreepayments.api.dropin.AddCardActivity"></activity>
</application>
</manifest>
正如你可以看到服務已啓用,並出口。 下面是服務
public class MyFirebaseInstanceIdService extends FirebaseInstanceIdService {
private static final String TAG = "MyFirebaseIIDService";
private static final String FRIENDLY_ENGAGE_TOPIC = "friendly_engage";
/**
* The Application's current Instance ID token is no longer valid
* and thus a new one must be requested.
*/
public MyFirebaseInstanceIdService(){
super();
Log.d("startedServiceNoLie","hiiiiiiiiiiiiiiiiiiiii");
}
@Override
public void onTokenRefresh() {
// If you need to handle the generation of a token, initially or
// after a refresh this is where you should do that.
String token = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "FCM Token: " + token);
}
}
這是FirebaseMessagingService
public class MyFirebaseMessagingService extends FirebaseMessagingService {
private static final String TAG = "MyFMService";
public MyFirebaseMessagingService() {
super();
Log.d("startedMessageRecieved","messagingService");
}
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
// Handle data payload of FCM messages.
Log.d("messageRecieved", "FCM Message Id: " + remoteMessage.getMessageId());
Log.d("messageRecieved", "FCM Notification Message: " +
remoteMessage.getNotification());
Log.d("messageRecieved", "FCM Data Message: " + remoteMessage.getData());
}
}
這是從那裏既是服務正在從
public class MainActivity extends AppCompatActivity {
Button launch_msg_app;
// private static DatabaseReference root = FirebaseDatabase.getInstance().getReference();
@Override
protected void onCreate(Bundle savedInstanceState) {
FirebaseApp.initializeApp(this);
super.onCreate(savedInstanceState);
setContentView(R.layout.deletethislayout);
Intent intent = new Intent(this, MyFirebaseInstanceIdService.class);
Log.d("tokenNotRefresh",FirebaseInstanceId.getInstance().getToken());
startService(intent);
startService(new Intent(this, MyFirebaseMessagingService.class));
//startService(new Intent(this, DeleteService.class));
}
這裏是我的項目,稱爲活動。 gradle這個
buildscript {
repositories {
jcenter()
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
classpath 'com.google.gms:google-services:3.0.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
mavenLocal()
maven {
url 'https://maven.fabric.io/public'
}
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
這裏是我的應用程序.gradle
apply plugin: 'com.android.application'
repositories {
mavenLocal()
flatDir {
dirs 'libs'
}
}
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "com.example.beatrice.mylocalbartender"
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.google.android.gms:play-services:10.2.0'
compile 'com.android.support:design:25.0.0'
compile 'com.github.bumptech.glide:glide:3.6.1'
compile 'de.hdodenhof:circleimageview:1.3.0'
compile 'com.android.support:appcompat-v7:25.0.0'
// Google
compile 'com.google.android.gms:play-services-auth:10.2.0'
// Firebase
compile 'com.google.firebase:firebase-core:10.2.0'
compile 'com.google.firebase:firebase-messaging:10.2.0'
compile 'com.google.firebase:firebase-database:10.0.0'
compile 'com.google.firebase:firebase-auth:10.0.0'
compile 'com.google.firebase:firebase-config:10.0.0'
compile 'com.google.android.gms:play-services-appinvite:10.2.0'
compile 'com.google.android.gms:play-services-ads:10.2.0'
compile 'com.google.firebase:firebase-crash:10.0.0'
compile 'com.google.firebase:firebase-appindexing:10.0.0'
// Payments
compile 'com.firebaseui:firebase-ui-database:0.4.0'
compile 'com.braintreepayments.api:drop-in:3.+'
compile 'com.loopj.android:android-async-http:1.4.9'
compile 'com.google.android.gms:play-services-auth:10.2.0'
compile 'com.facebook.android:facebook-android-sdk:4.+'
compile 'com.google.android.gms:play-services-wallet:10.2.0'
compile 'com.firebase:geofire-android:2.1.1'
}
apply plugin: 'com.google.gms.google-services'
這是推動我們瘋了,我不知道爲什麼它沒有收到消息。我們再次從Firebase通知控制檯發送消息。我們發送了一條消息給整個應用程序,它仍然沒有任何作用。請幫助我們。非常感謝。
你的項目中有'google_service.json'嗎? – WenChao
是的,我喜歡。我不知道爲什麼它不起作用。我正在運行Firebase消息10.0.0。這會有所作爲嗎?在他們使用10.2.0的文檔中? –
我把所有東西都更新到了10.2.0,而且什麼都沒有。我在應用程序處於前臺並且應用程序處於後臺時沒有發送消息。 –