android - 通用 Android 通知处理程序

标签 android push-notification google-cloud-messaging onesignal android-push-notification

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

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

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

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 控制台上的 SENDER 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) 的可靠接口(interface)

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

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

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/FCM GCM Docs

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

关于android - 通用 Android 通知处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48905660/

相关文章:

android - Google GCM 延迟,TCP 超时修复?

java - 当单选按钮被选中时设置 View 的可见性

android - 是否可以在 Android 库项目中获取应用程序的上下文?

android - 在 GridView 中面临问题

android - DART 用户代理检测

android - 获取 GCM 的 API key

ios - Cordova/PhoneGap-2.5.0 的推送通知插件不工作

ios - Pushing notifications to iOS 目前有哪些选项?

android - 如何在 setStyle Notification 中同时使用 BigTextStyle 和 BigPictureStyle?

安卓无声推送