通用Android通知处理程序

BRD*_*oid 1 android push-notification google-cloud-messaging onesignal android-push-notification

我正在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;
}
Run Code Online (Sandbox Code Playgroud)

当Android应用程序在那里注册时,R.string.gcm_defaultSenderId是firebase上的SENDER ID.

截至目前,我已经在Android应用程序上设置了OneSignal

 @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        OneSignal.startInit(this)
                .setNotificationOpenedHandler(new ExampleNotificationOpenedHandler())
                .init();
        }
Run Code Online (Sandbox Code Playgroud)

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

如果API正在决定并在信号上初始化设备并发送推送通知.我不认为我会在Android应用程序上要求OneSignal设置.是对的吗?如果我从Android应用程序中删除OneSignal.我应该用什么来处理通知.

背后的原因是,截至目前我们正在使用OneSignal,将来如果我们更改提供商,我们不必在应用程序方面做任何事情.

是否有任何geniric方式来处理Android上的通知请.

谢谢您的帮助.[R

小智 5

是的,你不需要在客户端使用信号.你可以删除它.Onesignal文件说 - 实现GCM/FCM(谷歌),APNS(Apple)的可靠接口

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

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

GCM文档会仔细接收通知消息阅读文档,您将获得它.

以下方法将为您提供信息

@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.
    }

    // ...
}
Run Code Online (Sandbox Code Playgroud)

如果您希望直接使用GCM文档,也可以使用以下文档实现GCM/FCM

但是你现在应该使用FCM,因为GCM现在已被弃用.所以在这里你去 FCM文档