Skip to main content
RichRelevance

Category

Place this code in your native view initialization logic, such as viewDidLoad.

Return Personalization

Use this code when you are requesting and serving personalized product recommendations.

Replace the following placeholders in the code:

  • <placement name> with your Placement name. You can find a list of placements in your Dashboard.
  • <category ID>with the ID of the category currently being viewed.
#import <RichRelevanceSDK/RichRelevanceSDK.h>

RCHRequestPlacement *placement = [[RCHRequestPlacement alloc] initWithPageType:RCHPlacementPageTypeCategory name:@"<placement name>"];

RCHPlacementRecsBuilder *builder = [RCHSDK builderForRecsWithPlacement:placement];
[builder setCategoryID:@"<category ID>"];

__block RCHRecommendedProduct *product;
[[RCHSDK defaultClient] sendRequest:[builder build] success:^(id responseObject) {
    RCHPlacementsResult *result = responseObject;
    RCHPlacement *placement = result.placements[0];
    product = placement.recommendedProducts[0];
} failure:^(id responseObject, NSError *error){
    // Use this code block to handle any errors that may occur while loading recommendations.
    NSLog(@"Error encountered: %@", error);
}];

Calling multiple placements

If you want to call multiple placements, simply initialize a builder with a nil placement, then define your placements and pass them to builder:addPlacement. You can also create a list such as a NSArray and iterate with a for..in loop.

IMPORTANT Placements must always be of the same type per request.

    NSArray *placements = @[
                            [[RCHRequestPlacement alloc] initWithPageType:RCHPlacementPageTypeCategory name:@"recs_top"],
                            [[RCHRequestPlacement alloc] initWithPageType:RCHPlacementPageTypeCategory name:@"recs_middle"]
                            ];
    
    RCHPlacementRecsBuilder *builder = [RCHSDK builderForRecsWithPlacement:nil];
    for (RCHRequestPlacement *placement in placements) {
        [builder addPlacement:placement];
    }

    [builder setCategoryID:@"<category ID>"];
    [[RCHSDK defaultClient] sendRequest:builder success:^(id responseObject) {
        // Add your display logic here
    } failure:^(id responseObject, NSError *error) {
        // Add your error handling logic here
    }];

Listening Mode

When you do not render personalization in your Category UX, you must still send a tracking request using the SDK. This is required so that RichRelevance can gather usage data in order to train your personalization models. In this specific case, you can use a convenience builder that sets all the configuration parameters (including a listening placement) automatically.

Replace <category ID>with the ID of the category currently being viewed.

#import <RichRelevanceSDK/RichRelevanceSDK.h>

RCHPlacementRecsBuilder *builder = [RCHSDK builderForTrackingCategoryViewWithCategoryID:@"<category ID>"];
[[RCHSDK defaultClient] sendRequest:[builder build]];
  • Was this article helpful?