【问题标题】:UrbanAirship - HTML Button - set tag to pass to codeUrbanAirship - HTML 按钮 - 设置标签以传递给代码
【发布时间】:2019-11-13 18:30:12
【问题描述】:

我想做的很简单。我正在使用 UrbanAirship 来显​​示一个模态视图(“应用内自动化”),它是 HTML。我的 HTML 中有一个按钮。触发事件时,消息/视图显示正常。现在我在按钮的 HTML 中:

<button class="light" type="button" onclick="UAirship.close()">OK</button>

当点击按钮时,对 UAirship.close() 的调用工作正常并关闭消息。我在我的 Android 代码中设置了一个监听器,如下所示:

UAirship.shared()
            .getInAppMessagingManager()
            .addListener(new InAppMessageListener() {
                @Override
                public void onMessageDisplayed(@NonNull String scheduleId, @NonNull InAppMessage message) {
                    // gets here fine
                }

                @Override
                public void onMessageFinished(@NonNull String scheduleId, @NonNull InAppMessage message, @NonNull ResolutionInfo resolutionInfo) {
                    // gets here fine as well
                }
            });

当消息/视图显示和关闭时,它会毫无问题地进入这些方法。但是,我希望能够检测到一个特定的按钮被点击,而不是我在 HTML 中的其他按钮。有没有办法轻松解决这个问题,以便可以在“ResolutionInfo”对象或“InAppMessage”中传递一些自定义标签或其他东西?

我希望会有像“UAirship.close('tag')”这样的东西,该标签会被传回。甚至我可以将自定义 HTML 标记放在代码中可以识别的按钮上。真的只是任何方式都可以,我似乎无法在文档中找到如何正确地使用 HTML 来做到这一点。

我正在查看文档here。我看到了 UAirship.runAction() 方法,但我并不清楚这个方法的简单实现是什么(而且,在动作注册中引用的“CustomAction”类似乎甚至不存在于库中...... )。

当 Airship 消息在点击该按钮后关闭时,我基本上只需要在我的 Activity 中调用一行代码。

想法?

【问题讨论】:

    标签: javascript android html urbanairship.com


    【解决方案1】:

    我发现这个解决方案很有效,尽管可能有更好的解决方案。 在 HTML 中,对于按钮,调用 close(),然后调用 runAction():

    onclick="UAirship.close(); UAirship.runAction('my_action', null, null)"
    

    然后在代码中,在我的 Activity 的 onCreate() 中,我有这个:

    final String actionName = "my_action";
    Action customAction = new Action() {
        @NonNull
        @Override
        public ActionResult perform(@NonNull ActionArguments actionArguments) {
            String buttonActionName = actionArguments.getMetadata().getString(ActionArguments.REGISTRY_ACTION_NAME_METADATA);
            if (buttonActionName.equals(actionName)) {
                // DO WHAT IS NEEDED HERE
            }
            return ActionResult.newEmptyResult();
        }
    };
    ​
    UAirship.shared()
        .getActionRegistry()
        .registerAction(customAction, actionName);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-03
      • 1970-01-01
      • 1970-01-01
      • 2013-02-02
      相关资源
      最近更新 更多