为了账号安全,请及时绑定邮箱和手机立即绑定

打开推送通知后转到活动

打开推送通知后转到活动

MMTTMM 2021-12-10 12:35:56
当用户点击推送通知时,以下代码用作我的处理程序。代码运行正常,launchURL准确记录在我的日志中。但是,作为下一步,我想将用户引导至名为ViewPushLink. 我试图遵循在其他地方找到的类似说明,但作为一个新手,我希望得到一些具体的帮助。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);            }        }        }}编辑:ExampleNotificationOpenedHandler从我的主要活动中调用,如下所示:public class MainActivity extends AppCompatActivity {       private ProgressDialog progress;    public static boolean isNetworkStatusAvailable (Context context) {        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);        if (connectivityManager != null)        {            NetworkInfo netInfos = connectivityManager.getActiveNetworkInfo();            if(netInfos != null)                if(netInfos.isConnected())                    return true;        }        return false;    }
查看完整描述

2 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

将您的代码放在项目的应用程序类中。
对于使用 OneSignal SDK 的推送通知处理,需要考虑三件事。{如果您的项目有多个片段和一个主活动(导航抽屉活动),而其他活动从 MainActivity 的片段中调用}

  1. 目标活动

  2. 相关操作,例如您的活动的哪个部分,您要打开哪个片段,通过您可以在 jsonObject 数据中找到的某些操作来区分每个操作

  3. 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


查看完整回答
反对 回复 2021-12-10
?
catspeake

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);

            }

        }


        }


}


查看完整回答
反对 回复 2021-12-10
  • 2 回答
  • 0 关注
  • 157 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信