2 回答

TA貢獻(xiàn)1828條經(jīng)驗 獲得超3個贊
將您的代碼放在項目的應(yīng)用程序類中。
對于使用 OneSignal SDK 的推送通知處理,需要考慮三件事。{如果您的項目有多個片段和一個主活動(導(dǎo)航抽屜活動),而其他活動從 MainActivity 的片段中調(diào)用}
目標(biāo)活動
相關(guān)操作,例如您的活動的哪個部分,您要打開哪個片段,通過您可以在 jsonObject 數(shù)據(jù)中找到的某些操作來區(qū)分每個操作
Intent Flags,一個例子你想打開一個Activity,它的實例已經(jīng)在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);
}
有關(guān)更多詳細(xì)信息,請參閱一個信號 SDK 文檔 https://documentation.onesignal.com/docs

TA貢獻(xiàn)1111條經(jīng)驗 獲得超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);
}
}
}
}
添加回答
舉報