1

我正在我的 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 是在 Firebase 控制台上注册 Android 应用程序时的 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 决定并在 onesignal 上初始化设备并发送推送通知。我认为我不需要在 android 应用上设置 OneSignal。是对的吗?如果我从 android 应用程序中删除 OneSignal。我应该用什么来处理通过的通知。

背后的原因是,到目前为止,我们正在使用 OneSignal,并且将来如果我们更改提供程序,我们不必在应用程序端做任何事情。

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

感谢您的帮助。R

4

1 回答 1

5

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

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

Answering your question you can use below thing to receive Push notification, because it comes from Google cloud only ultimately

GCM docs to receive notification message read document carefully you will get it.

This below method will get you you 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.
    }

    // ...
}

and you can implement GCM/FCM also using below documentation, if you wish to go ahead directly GCM Docs

But you should use FCM now, because GCM is deprecated now. So here you go FCM docs

于 2018-02-21T12:38:57.253 回答