我的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,而且什么都没有。我在应用程序处于前台并且应用程序处于后台时没有发送消息。 –