通用 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
我正在 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