<service> MyFirebaseInstanceIdService未在清单中注册

时间:2018-06-28 14:42:40

标签: java android firebase android-manifest

我正在使用 FirebaseInstanceIdService 的服务来获取刷新的令牌。 但是,它从未调用过,并且始终警告

  

MyFirebaseInstanceIdService未在   清单

  • FirebaseInstanceIdService

公共类MyFirebaseInstanceIdService扩展了FirebaseInstanceIdService {

@Override
public void onTokenRefresh() {
    // Get updated InstanceID token.
    String refreshedToken = FirebaseInstanceId.getInstance().getToken();
    Timber.d("Refreshed token: " + refreshedToken);
}

}

  • 清单

    <service
        android:name="MyFirebaseInstanceIdService"
        android:enabled="true"
        android:exported="false">
        <intent-filter>
            <action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
        </intent-filter>
    </service>
    <service
        android:name="com.arts.m3droid.samatravel.empl.MyMessageService"
        android:enabled="true"
        android:exported="false">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT"/>
        </intent-filter>
    </service>
    

我使用firebase的文档以及通过在Android Studio中创建新的服务(“文件”>“新建”>“服务”>“服务”)将服务添加到清单中。

2 个答案:

答案 0 :(得分:3)

我希望这对您有用。

在您的程序包中创建MyFirebaseInstanceIdService。

    public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {

        private static final String TAG = "MyFirebaseIIDService";

        @Override
        public void onTokenRefresh() {
            String refreshedToken = FirebaseInstanceId.getInstance().getToken();
            Log.e(TAG, "Refreshed token: " + refreshedToken);
            storeToken(refreshedToken);
        }

        private void storeToken(String token) {
           //Store your token in sharedpreference.
        }
    }

然后在清单中这样调用。

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

答案 1 :(得分:0)

更新清单以指定服务类的完整软件包名称,例如:

android:name="com.arts.m3droid.samatravel.empl.MyFirebaseInstanceIdService"

您也可以使用“。”为应用程序包名称,例如shown in the documentation

android:name=".MyFirebaseInstanceIdService"

另请参阅documentation for Service name

  

实现服务的Service子类的名称。这个   应该是完全合格的类名(例如,   “ com.example.project.RoomService”)。但是,作为简写,如果   名称的第一个字符是句点(例如,“。RoomService”),   它被附加到在   元素。