通用 Android 通知处理程序

Generic Android notification handler

我正在 Android 应用程序中实施推送通知。我们正在使用 OneSignal 发送推送通知。我们有一个 API 跟踪所有设备,API 决定哪个 发送推送通知的设备。

API 请求 OneSignal,OneSignal 向设备发送通知。

从 Android 我使用保存在 API 上的以下代码获取设备令牌,并使用它发送推送通知。

public String getGCMTokenForPushNotification(){
    String token = "";
    try {
        InstanceID instanceID = InstanceID.getInstance(this);

        token = instanceID.getToken(getString(R.string.gcm_defaultSenderId),
                GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
        Log.i(TAG, "GCM Registration Token: " + token);
        return token;
    }catch (Exception e) {
        Log.d(TAG, "Failed to complete token refresh", e);
    }
    return token;
}

R.string.gcm_defaultSenderId 是 Android 应用程序在 firebase 控制台上注册时的发件人 ID。

截至目前,我已经使用

在 Android 应用程序上设置了 OneSignal
 @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        OneSignal.startInit(this)
                .setNotificationOpenedHandler(new ExampleNotificationOpenedHandler())
                .init();
        }

https://documentation.onesignal.com/docs/android-sdk-setup

如果API 正在决定和初始化设备上的一个信号并发送推送通知。我认为我不需要在 android 应用程序上设置 OneSignal。那正确吗? 如果我从 android 应用程序中删除 OneSignal。我应该使用什么来处理通过的通知。

背后的原因是,截至目前,我们正在使用 OneSignal,将来如果我们更改提供商,我们无需在应用端做任何事情。

请问有什么通用的方法可以处理 android 上的通知。

感谢您的帮助。 R

是的,您不需要在客户端上使用 onesignal。你可以删除它。 Onesignal文件说 - 实现 GCM/FCM (Google)、APNS (Apple)

的可靠接口

所以基本上它使用GCM/FCM,如果你没有复杂的场景,理想情况下你可以直接使用GCM/FCM。

回答你的问题你可以使用下面的东西来接收推送通知,因为它最终来自 Google 云

GCM docs to receive notification message仔细阅读文档你会明白的。

下面这个方法会给你留言

@Override
public void onMessageReceived(String from, Bundle data) {
    String message = data.getString("message");
    Log.d(TAG, "From: " + from);
    Log.d(TAG, "Message: " + message);

    if (from.startsWith("/topics/")) {
        // message received from some topic.
    } else {
        // normal downstream message.
    }

    // ...
}

如果你想直接继续GCM Docs

,你也可以使用下面的文档实现GCM/FCM

但是您现在应该使用 FCM,因为 GCM 现在已被弃用。所以给你 FCM docs