Objective-C:应用内消息传递按钮的动作

问题描述:

我正在按照UA的docs执行Urban Airship的交互式通知。我已经成功注册的类别和行动,像波纹管:Objective-C:应用内消息传递按钮的动作

// Define category options foreground and none 
UANotificationActionOptions optionsActions = (UANotificationActionOptionForeground); 
UANotificationActionOptions optionsNone = (UANotificationActionOptionNone); 
UANotificationCategoryOptions optionCategory = (UANotificationCategoryOptionCustomDismissAction); 

// Define cancel action for all categories 
UANotificationAction *actionCancel = [UANotificationAction actionWithIdentifier: @"action_cancel" 
                      title: @"Cancel" 
                     options: optionsNone]; 

// Define post action for the post category 
UANotificationAction *actionPost = [UANotificationAction actionWithIdentifier: @"action_post" 
                     title: @"Post" 
                     options: optionsActions]; 

// Actions of post category 
NSArray<UANotificationAction *> *actionsPost = @[actionPost, actionCancel]; 

// Define the post category 
UANotificationCategory *post = [UANotificationCategory categoryWithIdentifier: @"post_cancel" 
                     actions: actionsPost 
                  intentIdentifiers: @[] 
                     options: optionCategory]; 

// Set the custom categories 
[UAirship push].customCategories = [NSSet setWithArray:@[post]]; 

现在,我想建立一个应用程式消息与那些按钮(POST &取消)和我的按钮已经出现在我设置邮件的buttonGroup。不幸的是,我无法弄清楚如何链接每个按钮的自定义操作,我不知道我应该在消息的buttonActions中传递哪个字典。

UAInAppMessage *message = [UAInAppMessage new]; 
message.displayType = UAInAppMessageDisplayTypeBanner; 
message.position = UAInAppMessagePositionTop; 

message.duration = 5.0; 

message.alert = @"My alert" 
message.primaryColor = [UIColor whiteColor]; 
message.secondaryColor = [UIColor blackColor]; 

UAInAppMessaging *inAppMessaging = [UAInAppMessaging new]; 

[message setButtonGroup: @"post_cancel"]; // this line ensure that my in-app messaging add my two registered buttons 
[message setButtonActions: /* WHICH DICTIONARY SHOULD I PASS? */ ]; 

dispatch_async(dispatch_get_main_queue(), ^{ 
    [inAppMessaging displayMessage: message]; 
}); 

谢谢。

它期望一个按钮ID字典到动作名称到值的映射。例如:

@{ 
    @"action_cancel": 
     @{ 
      @"my_custom_action_name": @"custom action value", 
      @"another_action_name": @(YES) 
     }, 

    @"action_post": 
     @{ 
      @"some_other_action_name": @"some other action value" 
     } 
} 

应用内action_cancel按钮被点击时将运行my_custom_action_nameanother_action_name

+0

不错!它的工作,谢谢你! –