Java GCM GcmListenerService和InstanceIDListenerService

Java GCM GcmListenerService和InstanceIDListenerService,java,android,push-notification,google-cloud-messaging,Java,Android,Push Notification,Google Cloud Messaging,我遵循了这个链接,但我不了解一些事情 我应该从哪里启动GcmListenerService和InstanceIDListenerService(服务),因为在示例中,它们不会在代码中的任何地方启动它。这些课程是自动开始的吗 我的GcmListenerService课程: public class GcmMessageReceiver extends GcmListenerService { public GcmMessageReceiver() { Log.i("TEST", "Gcm

我遵循了这个链接,但我不了解一些事情

  • 我应该从哪里启动
    GcmListenerService
    InstanceIDListenerService
    (服务),因为在示例中,它们不会在代码中的任何地方启动它。这些课程是自动开始的吗
  • 我的
    GcmListenerService
    课程:

    public class GcmMessageReceiver extends GcmListenerService {
    
    public GcmMessageReceiver() {
        Log.i("TEST", "GcmMessageReceiver");
    }
    
    @Override
    public void onMessageReceived(String from, Bundle data) {
        String message = data.getString("message");
    
        Log.i("TEST", data.toString());
        Log.i("TEST", "Success!");
    
    }
    
    GcmListenerService
    manifest声明:

    <service
            android:name=".GcmMessageReceiver"
            android:exported="false" >
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            </intent-filter>
        </service>
    
    我的
    InstanceIDListenerService
    清单声明:

        <service
            android:name=".GcmOnTokenRefresh"
            android:exported="false" >
            <intent-filter>
                <action android:name="com.google.android.gms.iid.InstanceID" />
            </intent-filter>
        </service>
    
    
    
    是的,您是对的,如果您将它们写入AndroidManifest.xml文件,它们将自动启动。就像后台的所有其他服务一样。

    是的,您是对的,如果您将它们写入AndroidManifest.xml文件,它们将自动启动。就像后台的所有其他服务一样。

    在这些服务中,在构造函数中,我尝试打印出一些值,以查看服务是否启动(正如您在给定代码中看到的),但没有打印任何内容。当这些服务开始运行时?当应用程序收到意向通知时,它们就会启动。还有一件事,您的注册服务应该在您的主要活动中启动,我忘了:)@Stanislav Parkhomenko是对的,我还想在这里提到,你应该看看FCM,它是基于GCM的,但它有一些额外的功能,更容易实现。firebase.google.com/docs/cloud-messaging在这些服务中,在构造函数中,我试图打印出一些值,以查看服务是否启动(正如您在我的给定代码中看到的),但没有打印任何内容。当这些服务开始运行时?当应用程序收到意向通知时,它们就会启动。还有一件事,您的注册服务应该在您的主要活动中启动,我忘了:)@Stanislav Parkhomenko是对的,我还想在这里提到,你应该看看FCM,它是基于GCM的,但它有一些额外的功能,更容易实现。firebase.google.com/docs/cloud-messaging
        <service
            android:name=".GcmOnTokenRefresh"
            android:exported="false" >
            <intent-filter>
                <action android:name="com.google.android.gms.iid.InstanceID" />
            </intent-filter>
        </service>