Skip to content

Commit 0241630

Browse files
committed
add campaign to show share sheet methods
1 parent 1ea4965 commit 0241630

File tree

5 files changed

+47
-15
lines changed

5 files changed

+47
-15
lines changed

Branch-SDK/Branch-SDK/Branch.h

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,20 @@ typedef NS_ENUM(NSUInteger, BranchCreditHistoryOrder) {
199199
*/
200200
+ (BranchActivityItemProvider *)getBranchActivityItemWithParams:(NSDictionary *)params feature:(NSString *)feature stage:(NSString *)stage tags:(NSArray *)tags alias:(NSString *)alias;
201201

202+
/**
203+
Create a BranchActivityItemProvider which subclasses the `UIActivityItemProvider` This can be used for simple sharing via a `UIActivityViewController`.
204+
205+
Internally, this will create a short Branch Url that will be attached to the shared content.
206+
207+
@param params A dictionary to use while building up the Branch link.
208+
@param feature The feature the generated link will be associated with.
209+
@param stage The stage used for the generated link, indicating what part of a funnel the user is in.
210+
@param campaign Use this field to organize the links by actual marketing campaign.
211+
@param alias The alias for a link.
212+
@warning This can fail if the alias is already taken.
213+
*/
214+
+ (BranchActivityItemProvider *)getBranchActivityItemWithParams:(NSDictionary *)params feature:(NSString *)feature stage:(NSString *)stage campaign:(NSString *)campmaign tags:(NSArray *)tags alias:(NSString *)alias;
215+
202216
/**
203217
Create a BranchActivityItemProvider which subclasses the `UIActivityItemProvider` This can be used for simple sharing via a `UIActivityViewController`.
204218
@@ -759,21 +773,22 @@ typedef NS_ENUM(NSUInteger, BranchCreditHistoryOrder) {
759773
- (NSString *)getShortURLWithParams:(NSDictionary *)params andTags:(NSArray *)tags andChannel:(NSString *)channel andFeature:(NSString *)feature andStage:(NSString *)stage andAlias:(NSString *)alias ignoreUAString:(NSString *)ignoreUAString;
760774

761775
/**
762-
Get a short url with specified tags, params, channel, feature, and stage. The usage type will default to unlimited.
776+
Get a short url with specified tags, params, channel, feature, stage and campaign. The usage type will default to unlimited.
763777
764778
@param params Dictionary of parameters to include in the link.
765779
@param tags An array of tags to associate with this link, useful for tracking.
766780
@param channel The channel for the link. Examples could be Facebook, Twitter, SMS, etc, depending on where it will be shared.
767781
@param feature The feature this is utilizing. Examples could be Sharing, Referring, Inviting, etc.
768782
@param stage The stage used for the generated link, indicating what part of a funnel the user is in.
783+
@param campaign Use this field to organize the links by actual marketing campaign.
769784
@param alias The alias for a link.
770785
@param ignoreUAString The User Agent string to tell the server to ignore the next request from, to prevent it from treating a preview scrape as a link click.
771786
@param forceLinkCreation Whether we should create a link from the Branch Key even if initSession failed. Defaults to NO.
772787
@warning This method makes a synchronous url request.
773788
@warning This method is primarily intended to be an internal Branch method, used to work around a bug with SLComposeViewController
774789
@warning This can fail if the alias is already taken.
775790
*/
776-
- (NSString *)getShortURLWithParams:(NSDictionary *)params andTags:(NSArray *)tags andChannel:(NSString *)channel andFeature:(NSString *)feature andStage:(NSString *)stage andAlias:(NSString *)alias ignoreUAString:(NSString *)ignoreUAString forceLinkCreation:(BOOL)forceLinkCreation;
791+
- (NSString *)getShortURLWithParams:(NSDictionary *)params andTags:(NSArray *)tags andChannel:(NSString *)channel andFeature:(NSString *)feature andStage:(NSString *)stage andCampaign:(NSString *)campaign andAlias:(NSString *)alias ignoreUAString:(NSString *)ignoreUAString forceLinkCreation:(BOOL)forceLinkCreation;
777792

778793
/**
779794
Get a short url with specified tags, params, channel, feature, stage, and type.

Branch-SDK/Branch-SDK/Branch.m

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -163,27 +163,31 @@ - (id)initWithInterface:(BNCServerInterface *)interface queue:(BNCServerRequestQ
163163
#pragma mark - BrachActivityItemProvider methods
164164

165165
+ (BranchActivityItemProvider *)getBranchActivityItemWithParams:(NSDictionary *)params {
166-
return [[BranchActivityItemProvider alloc] initWithParams:params tags:nil feature:nil stage:nil alias:nil delegate:nil];
166+
return [[BranchActivityItemProvider alloc] initWithParams:params tags:nil feature:nil stage:nil campaign:nil alias:nil delegate:nil];
167167
}
168168

169169
+ (BranchActivityItemProvider *)getBranchActivityItemWithParams:(NSDictionary *)params feature:(NSString *)feature {
170-
return [[BranchActivityItemProvider alloc] initWithParams:params tags:nil feature:feature stage:nil alias:nil delegate:nil];
170+
return [[BranchActivityItemProvider alloc] initWithParams:params tags:nil feature:feature stage:nil campaign:nil alias:nil delegate:nil];
171171
}
172172

173173
+ (BranchActivityItemProvider *)getBranchActivityItemWithParams:(NSDictionary *)params feature:(NSString *)feature stage:(NSString *)stage {
174-
return [[BranchActivityItemProvider alloc] initWithParams:params tags:nil feature:feature stage:stage alias:nil delegate:nil];
174+
return [[BranchActivityItemProvider alloc] initWithParams:params tags:nil feature:feature stage:stage campaign:nil alias:nil delegate:nil];
175175
}
176176

177177
+ (BranchActivityItemProvider *)getBranchActivityItemWithParams:(NSDictionary *)params feature:(NSString *)feature stage:(NSString *)stage tags:(NSArray *)tags {
178-
return [[BranchActivityItemProvider alloc] initWithParams:params tags:tags feature:feature stage:stage alias:nil delegate:nil];
178+
return [[BranchActivityItemProvider alloc] initWithParams:params tags:tags feature:feature stage:stage campaign:nil alias:nil delegate:nil];
179+
}
180+
181+
+ (BranchActivityItemProvider *)getBranchActivityItemWithParams:(NSDictionary *)params feature:(NSString *)feature stage:(NSString *)stage campaign:(NSString *)campaign tags:(NSArray *)tags alias:(NSString *)alias {
182+
return [[BranchActivityItemProvider alloc] initWithParams:params tags:tags feature:feature stage:stage campaign:campaign alias:alias delegate:nil];
179183
}
180184

181185
+ (BranchActivityItemProvider *)getBranchActivityItemWithParams:(NSDictionary *)params feature:(NSString *)feature stage:(NSString *)stage tags:(NSArray *)tags alias:(NSString *)alias {
182-
return [[BranchActivityItemProvider alloc] initWithParams:params tags:tags feature:feature stage:stage alias:alias delegate:nil];
186+
return [[BranchActivityItemProvider alloc] initWithParams:params tags:tags feature:feature stage:stage campaign:nil alias:alias delegate:nil];
183187
}
184188

185189
+ (BranchActivityItemProvider *)getBranchActivityItemWithParams:(NSDictionary *)params feature:(NSString *)feature stage:(NSString *)stage tags:(NSArray *)tags alias:(NSString *)alias delegate:(id <BranchActivityItemProviderDelegate>)delegate {
186-
return [[BranchActivityItemProvider alloc] initWithParams:params tags:tags feature:feature stage:stage alias:alias delegate:delegate];
190+
return [[BranchActivityItemProvider alloc] initWithParams:params tags:tags feature:feature stage:stage campaign:nil alias:alias delegate:delegate];
187191
}
188192

189193

@@ -706,8 +710,8 @@ - (NSString *)getShortURLWithParams:(NSDictionary *)params andTags:(NSArray *)ta
706710
return [self generateShortUrl:tags andAlias:alias andType:BranchLinkTypeUnlimitedUse andMatchDuration:0 andChannel:channel andFeature:feature andStage:stage andCampaign:nil andParams:params ignoreUAString:ignoreUAString forceLinkCreation:NO];
707711
}
708712

709-
- (NSString *)getShortURLWithParams:(NSDictionary *)params andTags:(NSArray *)tags andChannel:(NSString *)channel andFeature:(NSString *)feature andStage:(NSString *)stage andAlias:(NSString *)alias ignoreUAString:(NSString *)ignoreUAString forceLinkCreation:(BOOL)forceLinkCreation {
710-
return [self generateShortUrl:tags andAlias:alias andType:BranchLinkTypeUnlimitedUse andMatchDuration:0 andChannel:channel andFeature:feature andStage:stage andCampaign:nil andParams:params ignoreUAString:ignoreUAString forceLinkCreation:forceLinkCreation];
713+
- (NSString *)getShortURLWithParams:(NSDictionary *)params andTags:(NSArray *)tags andChannel:(NSString *)channel andFeature:(NSString *)feature andStage:(NSString *)stage andCampaign:(NSString *)campaign andAlias:(NSString *)alias ignoreUAString:(NSString *)ignoreUAString forceLinkCreation:(BOOL)forceLinkCreation {
714+
return [self generateShortUrl:tags andAlias:alias andType:BranchLinkTypeUnlimitedUse andMatchDuration:0 andChannel:channel andFeature:feature andStage:stage andCampaign:campaign andParams:params ignoreUAString:ignoreUAString forceLinkCreation:forceLinkCreation];
711715
}
712716

713717
- (NSString *)getShortURLWithParams:(NSDictionary *)params andTags:(NSArray *)tags andChannel:(NSString *)channel andFeature:(NSString *)feature andStage:(NSString *)stage andType:(BranchLinkType)type {

Branch-SDK/Branch-SDK/BranchActivityItemProvider.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
- (NSArray *)activityItemTagsForChannel:(NSString *)channel;
2222
- (NSString *)activityItemFeatureForChannel:(NSString *)channel;
2323
- (NSString *)activityItemStageForChannel:(NSString *)channel;
24+
- (NSString *)activityItemCampaignForChannel:(NSString *)channel;
2425
- (NSString *)activityItemAliasForChannel:(NSString *)channel;
2526
- (NSString *)activityItemOverrideChannelForChannel:(NSString *)channel;
2627

@@ -29,6 +30,6 @@
2930
@interface BranchActivityItemProvider : UIActivityItemProvider
3031

3132
- (id)initWithParams:(NSDictionary *)params andTags:(NSArray *)tags andFeature:(NSString *)feature andStage:(NSString *)stage andAlias:(NSString *)alias __attribute__((deprecated(("Use the delegate method instead"))));;
32-
- (id)initWithParams:(NSDictionary *)params tags:(NSArray *)tags feature:(NSString *)feature stage:(NSString *)stage alias:(NSString *)alias delegate:(id <BranchActivityItemProviderDelegate>)delegate;
33+
- (id)initWithParams:(NSDictionary *)params tags:(NSArray *)tags feature:(NSString *)feature stage:(NSString *)stage campaign:(NSString *)campaign alias:(NSString *)alias delegate:(id <BranchActivityItemProviderDelegate>)delegate;
3334

3435
@end

Branch-SDK/Branch-SDK/BranchActivityItemProvider.m

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ @interface BranchActivityItemProvider ()
2626
@property (strong, nonatomic) NSArray *tags;
2727
@property (strong, nonatomic) NSString *feature;
2828
@property (strong, nonatomic) NSString *stage;
29+
@property (strong, nonatomic) NSString *campaign;
2930
@property (strong, nonatomic) NSString *alias;
3031
@property (strong, nonatomic) NSString *userAgentString;
3132
@property (weak, nonatomic) id <BranchActivityItemProviderDelegate> delegate;
@@ -35,17 +36,18 @@ @interface BranchActivityItemProvider ()
3536
@implementation BranchActivityItemProvider
3637

3738
- (id)initWithParams:(NSDictionary *)params andTags:(NSArray *)tags andFeature:(NSString *)feature andStage:(NSString *)stage andAlias:(NSString *)alias {
38-
return [self initWithParams:params tags:tags feature:feature stage:stage alias:alias delegate:nil];
39+
return [self initWithParams:params tags:tags feature:feature stage:stage campaign:nil alias:alias delegate:nil];
3940
}
4041

41-
- (id)initWithParams:(NSDictionary *)params tags:(NSArray *)tags feature:(NSString *)feature stage:(NSString *)stage alias:(NSString *)alias delegate:(id <BranchActivityItemProviderDelegate>)delegate {
42+
- (id)initWithParams:(NSDictionary *)params tags:(NSArray *)tags feature:(NSString *)feature stage:(NSString *)stage campaign:(NSString *)campaign alias:(NSString *)alias delegate:(id <BranchActivityItemProviderDelegate>)delegate {
4243
NSString *url = [[Branch getInstance] getLongURLWithParams:params andChannel:nil andTags:tags andFeature:feature andStage:stage andAlias:alias];
4344

4445
if (self = [super initWithPlaceholderItem:[NSURL URLWithString:url]]) {
4546
_params = params;
4647
_tags = tags;
4748
_feature = feature;
4849
_stage = stage;
50+
_campaign = campaign;
4951
_alias = alias;
5052
_userAgentString = [[[UIWebView alloc] init] stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
5153
_delegate = delegate;
@@ -62,6 +64,7 @@ - (id)item {
6264
NSArray *tags = [self tagsForChannel:channel];
6365
NSString *feature = [self featureForChannel:channel];
6466
NSString *stage = [self stageForChannel:channel];
67+
NSString *campaign = [self campaignForChannel:channel];
6568
NSString *alias = [self aliasForChannel:channel];
6669

6770
// Allow the channel param to be overridden, perhaps they want "fb" instead of "facebook"
@@ -71,9 +74,9 @@ - (id)item {
7174

7275
// Because Facebook immediately scrapes URLs, we add an additional parameter to the existing list, telling the backend to ignore the first click
7376
if ([channel isEqualToString:@"facebook"] || [channel isEqualToString:@"twitter"] || [channel isEqualToString:@"com.tinyspeck.chatlyio.share"]) {
74-
return [NSURL URLWithString:[[Branch getInstance] getShortURLWithParams:params andTags:tags andChannel:channel andFeature:feature andStage:stage andAlias:alias ignoreUAString:self.userAgentString forceLinkCreation:YES]];
77+
return [NSURL URLWithString:[[Branch getInstance] getShortURLWithParams:params andTags:tags andChannel:channel andFeature:feature andStage:stage andCampaign:campaign andAlias:alias ignoreUAString:self.userAgentString forceLinkCreation:YES]];
7578
}
76-
return [NSURL URLWithString:[[Branch getInstance] getShortURLWithParams:params andTags:tags andChannel:channel andFeature:feature andStage:stage andAlias:alias ignoreUAString:nil forceLinkCreation:YES]];
79+
return [NSURL URLWithString:[[Branch getInstance] getShortURLWithParams:params andTags:tags andChannel:channel andFeature:feature andStage:stage andCampaign:campaign andAlias:alias ignoreUAString:nil forceLinkCreation:YES]];
7780
}
7881

7982
#pragma mark - Internals
@@ -132,6 +135,11 @@ - (NSString *)stageForChannel:(NSString *)channel {
132135
return ([self.delegate respondsToSelector:@selector(activityItemStageForChannel:)]) ? [self.delegate activityItemStageForChannel:channel] : self.stage;
133136
}
134137

138+
- (NSString *)campaignForChannel:(NSString *)channel {
139+
return ([self.delegate respondsToSelector:@selector(activityItemCampaignForChannel:)]) ? [self.delegate activityItemCampaignForChannel:channel] : self.campaign;
140+
}
141+
142+
135143
- (NSString *)aliasForChannel:(NSString *)channel {
136144
return ([self.delegate respondsToSelector:@selector(activityItemAliasForChannel:)]) ? [self.delegate activityItemAliasForChannel:channel] : self.alias;
137145
}

Branch-SDK/Branch-SDK/BranchUniversalObject.m

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ - (NSString *)getShortUrlWithLinkPropertiesAndIgnoreFirstClick:(BranchLinkProper
127127
andChannel:linkProperties.channel
128128
andFeature:linkProperties.feature
129129
andStage:linkProperties.stage
130+
andCampaign:linkProperties.campaign
130131
andAlias:linkProperties.alias
131132
ignoreUAString:UAString
132133
forceLinkCreation:YES];
@@ -141,9 +142,11 @@ - (UIActivityItemProvider *)getBranchActivityItemWithLinkProperties:(BranchLinkP
141142
if (linkProperties.matchDuration) {
142143
[params setObject:@(linkProperties.matchDuration) forKey:BRANCH_REQUEST_KEY_URL_DURATION];
143144
}
145+
144146
return [Branch getBranchActivityItemWithParams:params
145147
feature:linkProperties.feature
146148
stage:linkProperties.stage
149+
campaign:linkProperties.campaign
147150
tags:linkProperties.tags
148151
alias:linkProperties.alias];
149152
}
@@ -353,6 +356,7 @@ - (NSDictionary *)getDictionaryWithCompleteLinkProperties:(BranchLinkProperties
353356
[self safeSetValue:linkProperties.alias forKey:[NSString stringWithFormat:@"~%@", BRANCH_REQUEST_KEY_URL_ALIAS] onDict:temp];
354357
[self safeSetValue:linkProperties.channel forKey:[NSString stringWithFormat:@"~%@", BRANCH_REQUEST_KEY_URL_CHANNEL] onDict:temp];
355358
[self safeSetValue:linkProperties.stage forKey:[NSString stringWithFormat:@"~%@", BRANCH_REQUEST_KEY_URL_STAGE] onDict:temp];
359+
[self safeSetValue:linkProperties.campaign forKey:[NSString stringWithFormat:@"~%@", BRANCH_REQUEST_KEY_URL_CAMPAIGN] onDict:temp];
356360
[self safeSetValue:@(linkProperties.matchDuration) forKey:[NSString stringWithFormat:@"~%@", BRANCH_REQUEST_KEY_URL_DURATION] onDict:temp];
357361

358362
return [temp copy];

0 commit comments

Comments
 (0)