1

我正嘗試從Google Firebase推送我的應用程序通知。然而,在我的AndroidManifest.xml文件,這個問題似乎是在Firebase - 無法解析符號'MyFirebaseMessagingService'

 <service 
     android:name=".MapsActivity"> 

我得到,因爲同一個名字的錯誤出現在

<activity 
    android:name=".MapsActivity" 
    android:label="@string/title_activity_maps"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

從教程,它應該像

android:name=".MyFirebaseMessagingService"> 

,但我改變了它,因爲在我的MainActivity.java類是

public class MapsActivity extends AppCompatActivity 

AndroidManifest.xml中

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 

    <meta-data 
     android:name="com.google.android.geo.API_KEY" 
     android:value="@string/google_maps_key" /> 
    <meta-data 
     android:name="com.google.firebase.messaging.default_notification_icon" 
     android:resource="@drawable/ic_stat_ic_notification" /> 
     android:name="com.google.firebase.messaging.default_notification_color" 
     android:resource="@color/colorAccent" /> 

    <activity 
     android:name=".MapsActivity" 
     android:label="@string/title_activity_maps"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <service 
     android:name=".MapsActivity"> 
     <intent-filter> 
      <action android:name="com.google.firebase.MESSAGING_EVENT"/> 
     </intent-filter> 
    </service> 
    <service 
     android:name=".MapsActivity"> 
     <intent-filter> 
      <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/> 
     </intent-filter> 
    </service> 
</application> 
</manifest> 

的build.gradle

dependencies { 
compile fileTree(dir: 'libs', include: ['*.jar']) 
testCompile 'junit:junit:4.12' 
compile 'com.android.support:appcompat-v7:23.4.0' 
compile 'com.google.android.gms:play-services:9.8.0' 

} 
apply plugin: 'com.google.gms.google-services' 

你們是否有任何想法如何解決這個問題?

+0

如果您使用設備來測試您的應用程序,請告訴我他們的模型請 –

+0

@MerlíEscarpenterPérezsony xperia z2 – Key

+0

好的,你能告訴我你的依賴關係嗎(構建和應用程序)? –

回答

1

這部分代碼的問題是:

<service 
    android:name=".MapsActivity"> 
    <intent-filter> 
     <action android:name="com.google.firebase.MESSAGING_EVENT"/> 
    </intent-filter> 
</service> 
<service 
    android:name=".MapsActivity"> 
    <intent-filter> 
     <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/> 
    </intent-filter> 
</service> 

爲什麼?服務不能是一個活動,不能有相同的名稱。在這兩種服務的不同服務擴展,那麼你需要一個類來擴展服務第一,另一根延伸第二服務,如示例:

MyFirebaseInstanceIDService:

public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService 
{ 
    ... 
} 

MyFirebaseMessagingService:

public class MyFirebaseMessagingService extends FirebaseMessagingService 
{ 
    ... 
} 

然後你清單意志的樣子爲:

<service 
    android:name=".MyFirebaseInstanceIDService"> 
    <intent-filter> 
     <action android:name="com.google.firebase.MESSAGING_EVENT"/> 
    </intent-filter> 
</service> 

<service 
    android:name=".MyFirebaseMessagingService"> 
    <intent-filter> 
     <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/> 
    </intent-filter> 
</service> 

對於其他部分請記住,您有2個階梯(應用程序和項目)。看到兩者,在項目部分需要選擇項目視圖

app.gradle

apply plugin: 'com.android.application' 

android { 
    // ... 
} 

dependencies { 
    // ... 
    compile 'com.google.firebase:firebase-messaging:9.6.1' 
} 

// ADD THIS AT THE BOTTOM 
apply plugin: 'com.google.gms.google-services' 

而且project.gradle

buildscript { 
    // ... 
    dependencies { 
     // ... 
     classpath 'com.google.gms:google-services:3.0.0' 
    } 
} 

讓我知道如果我幫助你,良好的編程!