添加适用于 Android 的 Google Cloud Messaging (FCM) - 注册流程

2024-06-28

几个星期以来,我一直在为 GCM 的实现而苦苦挣扎,但我真正想了解它是如何工作的,所以我决定采取“小步骤”。

首先,正如提到的here https://developers.google.com/cloud-messaging/registration,我明白要做的第一件事是注册我的设备/应用程序必须首先向 GCM 注册。

要验证它们是否可以发送和接收消息,客户端应用程序必须向 GCM 注册。在此过程中,客户端获得唯一的注册令牌。

我想知道下面的过程和代码是否代表进行此类注册所需的最少代码(“所需代码非常少'是因为当我学习 OpenGL ES 2.0 并开始处理着色器时,我发现在处理困难/令人困惑的概念时,如果您了解所需的最少代码,您以后可以了解什么是“外围”代码)

向 GCM 注册应用程序的过程:

  1. 在Google开发者控制台创建一个项目;

    1. 激活“Android云消息”API;
    2. 在“Credentials”处创建服务器 API 密钥;
    3. 记下项目 ID;
    4. 记下项目编号;
    5. 记下服务器 API 密钥;
  2. 创建Android Studio项目;

    1. 添加“App Engine Backend with CGM”模块类型;
    2. 在打开的“appengine-web.xml”窗口中,输入应用程序 ID 和服务器 API 密钥。
    3. 使用项目编号 (SENDER_ID) 创建主要活动。

完成所有这些操作并运行应用程序后,我得到了一个包含 152 个字符的令牌。这一切都正确吗?考虑到我拿回了令牌,我的设备是否已向 GCM 注册?

appengine-web.xml:

<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
    <application>mygcmtest...</application>
    <version>1</version>
    <threadsafe>true</threadsafe>

    <system-properties>
        <property name="java.util.logging.config.file" value="WEB-INF/logging.properties" />

        <property name="gcm.api.key" value="AIza..." />
    </system-properties>
</appengine-web-app>

主要活动:

public class MainActivity extends AppCompatActivity {

    private final Context mContext = this;
    private final String SENDER_ID = "319899...";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        getGCMToken();
    }

    private void getGCMToken() {
        new AsyncTask<Void, Void, Void>() {
            @Override
            protected Void doInBackground(Void... params) {
                try {
                    InstanceID instanceID = InstanceID.getInstance(mContext);
                    String token = instanceID.getToken(SENDER_ID, GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
                    Log.e("GCM Token", token);
                } catch (IOException e) {
                    e.printStackTrace();
                }
                return null;
            }
        }.execute();
    }
}

显现:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.aninha.mygcmtest..." >

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

    <permission
        android:name="com.example.gcm.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />

    <uses-permission android:name="com.example.gcm.permission.C2D_MESSAGE" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

我对你问题的回答是用源代码吗如何使用 Android Studio 为 Android 实现 GCM Hello World https://stackoverflow.com/questions/32299997/how-to-implement-a-gcm-hello-world-for-android-using-android-studio还不足以让您创建两个简单的 GCM 项目(服务器端和客户端)吗? :)

当然,我使用的示例代码只是针对非常基本的情况“服务器应用程序发送,客户端应用程序接收并显示消息”.

总而言之,您需要执行以下步骤:

  1. 创建一个新项目谷歌开发者控制台 https://console.developers.google.com。在这 步骤,为简单起见,您只需要记下 2 个值:Project Number, 哪个 将用作SENDER_ID在我的客户项目中;和API server key(创建于证书), 哪个 将用作API_KEY在我的服务器项目中。
  2. 为服务器端创建一个新的简单 Android 项目(使用基本源代码作为我在上一个问题中的答案)。
  3. 为客户端创建一个新的简单 Android 项目(使用基本源代码作为我在上一个问题中的答案,我从原始源代码进行了定制Google 云消息传递 - GitHub https://github.com/google/gcm).
  4. 运行客户端应用程序,您将获得注册令牌(意味着您的设备已成功注册)。然后,将此标记粘贴(硬编码)到CLIENT_REGISTRATION_TOKEN服务器应用程序中的变量。
  5. 运行服务器应用程序,并检查结果(客户端应用程序是否收到消息)

希望这可以帮助!

P/S:我没有使用任何appengine-web.xml file

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

添加适用于 Android 的 Google Cloud Messaging (FCM) - 注册流程 的相关文章

随机推荐