2 回答
TA贡献1828条经验 获得超3个赞
将您的代码放在项目的应用程序类中。
对于使用 OneSignal SDK 的推送通知处理,需要考虑三件事。{如果您的项目有多个片段和一个主活动(导航抽屉活动),而其他活动从 MainActivity 的片段中调用}
目标活动
相关操作,例如您的活动的哪个部分,您要打开哪个片段,通过您可以在 jsonObject 数据中找到的某些操作来区分每个操作
Intent Flags,一个例子你想打开一个Activity,它的实例已经在backStack中,所以你可能想清除backstack并打开该activity的新实例或者可能打开同一个实例。
例子:
public XYZApplication extends Application{
class ExampleNotificationOpenedHandler implements OneSignal.NotificationOpenedHandler {
public static String launchURL;
@Override
public void notificationOpened(OSNotificationOpenResult result) {
OSNotificationAction.ActionType actionType = result.action.type;
JSONObject data = result.notification.payload.additionalData;
if (data != null) {
String target = data.optString("target");
String action = "";
switch (target) {
case "xyz":
action = data.optString("action");
Utils.setTarget(target);
if (action.equalsIgnoreCase("xyz")
|| action.equalsIgnoreCase("abc")) {
Intent xyzIntent = new Intent(getApplicationContext(), XYZActivity.class);
homeIntent.putExtra("action_key", "action_xyz");
homeIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(xyzIntent);
}
有关更多详细信息,请参阅一个信号 SDK 文档 https://documentation.onesignal.com/docs
TA贡献1111条经验 获得超0个赞
将您的 Activity 更改为此;肯定会对你有所帮助。
class ExampleNotificationOpenedHandler implements OneSignal.NotificationOpenedHandler {
public static String launchURL;
@Override
public void notificationOpened(OSNotificationOpenResult result) {
OSNotificationAction.ActionType actionType = result.action.type;
JSONObject data = result.notification.payload.additionalData;
if (data != null) {
launchURL = data.optString("launchURL");
if (launchURL != null) {
Log.i("OneSignalExample", "launchURL value: " + launchURL);
Intent intent = new Intent(getApplicationContext, ViewPushLink.class)
startActivity(intent);
}
}
}
}
添加回答
举报