我正在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架构上的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,将来如果我们更改提供商,我们就不必在应用程序端做任何事情。
是否有任何geniric方法来处理Android上的通知。
感谢您的帮助。 [R
答案 0 :(得分:5)
是的,您不需要在客户端使用信号。你可以删除它。 Onesignal文件说 - 为GCM / FCM(谷歌),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