6
6
// Copyright (c) 2014 Iterable. All rights reserved.
7
7
//
8
8
9
- @ import Foundation;
9
+ # import < UIKit/UIKit.h >
10
10
#import " CommerceItem.h"
11
+ #import " IterableAction.h"
11
12
#import " IterableConstants.h"
13
+ #import " IterableConfig.h"
14
+ #import " IterableAttributionInfo.h"
12
15
13
16
// all params are nonnull, unless annotated otherwise
14
17
NS_ASSUME_NONNULL_BEGIN
@@ -23,16 +26,6 @@ typedef void (^OnSuccessHandler)(NSDictionary *data);
23
26
*/
24
27
typedef void (^OnFailureHandler)(NSString *reason, NSData *_Nullable data);
25
28
26
- /* *
27
- Enum representing push platform; apple push notification service, production vs sandbox
28
- */
29
- typedef NS_ENUM (NSInteger , PushServicePlatform) {
30
- /* * The sandbox push service */
31
- APNS_SANDBOX,
32
- /* * The production push service */
33
- APNS
34
- };
35
-
36
29
/* *
37
30
`IterableAPI` contains all the essential functions for communicating with Iterable's API
38
31
*/
@@ -42,6 +35,11 @@ typedef NS_ENUM(NSInteger, PushServicePlatform) {
42
35
// / @name Properties
43
36
// //////////////////
44
37
38
+ /* *
39
+ SDK Configuration object
40
+ */
41
+ @property (nonatomic , readonly ) IterableConfig *config;
42
+
45
43
/* *
46
44
The apiKey that this IterableAPI is using
47
45
*/
@@ -57,167 +55,92 @@ typedef NS_ENUM(NSInteger, PushServicePlatform) {
57
55
*/
58
56
@property (nonatomic , readonly , copy ) NSString *userId;
59
57
60
-
61
58
/* *
62
59
The hex representation of this device token
63
60
*/
64
61
@property (nonatomic , readonly , copy ) NSString *hexToken;
65
62
66
- // ///////////////////////////////
67
- // / @name Creating an IterableAPI
68
- // ///////////////////////////////
69
-
70
- /* !
71
- @method
72
-
73
- @abstract Initializes Iterable with launchOptions
74
-
75
- @param apiKey your Iterable apiKey
76
- @param email the email of the user logged in
77
- @param launchOptions launchOptions from application:didFinishLaunchingWithOptions or custom launchOptions
78
- @param useCustomLaunchOptions whether or not to use the custom launchOption without the UIApplicationLaunchOptionsRemoteNotificationKey
79
-
80
- @return an instance of IterableAPI
63
+ /* *
64
+ The userInfo dictionary which came with last push.
81
65
*/
82
- - (instancetype ) initWithApiKey : (NSString *)apiKey andEmail : (NSString *)email launchOptions : (nullable NSDictionary *)launchOptions useCustomLaunchOptions : (BOOL )useCustomLaunchOptions ;
83
-
84
- /* !
85
- @method
86
-
87
- @abstract Initializes Iterable with just an API key and email, but no launchOptions
88
-
89
- @param apiKey your Iterable apiKey
90
- @param userId the userId of the user logged in
91
-
92
- @return an instance of IterableAPI
66
+ @property (nonatomic , readonly , copy , nullable ) NSDictionary *lastPushPayload;
67
+ /* *
68
+ Attribution info (campaignId, messageId etc.) for last push open or app link click from an email.
93
69
*/
94
- - ( instancetype ) initWithApiKey : ( NSString *) apiKey andUserId : ( NSString *) userId ;
70
+ @property ( nonatomic , readwrite , strong , nullable ) IterableAttributionInfo *attributionInfo ;
95
71
96
- /* !
97
- @method
98
-
99
- @abstract Initializes Iterable with launchOptions
100
-
101
- @param apiKey your Iterable apiKey
102
- @param userId the userId of the user logged in
103
- @param launchOptions launchOptions from application:didFinishLaunchingWithOptions
104
-
105
- @return an instance of IterableAPI
106
- */
107
- - (instancetype ) initWithApiKey : (NSString *)apiKey andUserId : (NSString *)userId launchOptions : (nullable NSDictionary *)launchOptions ;
72
+ // ///////////////////////////////
73
+ // / @name Initializing IterableAPI
74
+ // ///////////////////////////////
108
75
109
- /* !
110
- @method
111
-
112
- @abstract Initializes Iterable with launchOptions
113
-
114
- @param apiKey your Iterable apiKey
115
- @param userId the userId of the user logged in
116
- @param launchOptions launchOptions from application:didFinishLaunchingWithOptions or custom launchOptions
117
- @param useCustomLaunchOptions whether or not to use the custom launchOption without the UIApplicationLaunchOptionsRemoteNotificationKey
118
-
119
- @return an instance of IterableAPI
76
+ /* *
77
+ * Initializes IterableAPI
78
+ * This method must be called from UIApplicationDelegate's `application:didFinishLaunchingWithOptions:`
79
+ *
80
+ * @note Make sure you also call `setEmail:` or `setUserId:` before making any API calls
81
+ * @param apiKey Iterable Mobile API key
82
+ * @param launchOptions launchOptions object passed from `application:didFinishLaunchingWithOptions:`
120
83
*/
121
- - ( instancetype ) initWithApiKey : (NSString *)apiKey andUserId : ( NSString *) userId launchOptions : (nullable NSDictionary *)launchOptions useCustomLaunchOptions : ( BOOL ) useCustomLaunchOptions ;
84
+ + ( void ) initializeWithApiKey : (NSString *)apiKey launchOptions : (nullable NSDictionary *)launchOptions ;
122
85
123
- /* !
124
- @method
125
-
126
- @abstract Initializes a shared instance of Iterable with launchOptions
127
-
128
- @discussion The sharedInstanceWithApiKey with email is preferred over userId.
129
- This method will set up a singleton instance of the `IterableAPI` class for
130
- you using the given project API key. When you want to make calls to Iterable
131
- elsewhere in your code, you can use `sharedInstance`. If launchOptions is there and
132
- the app was launched from a remote push notification, we will track a pushOpen.
133
-
134
- @param apiKey your Iterable apiKey
135
- @param userId the userId of the user logged in
136
- @param launchOptions launchOptions from application:didFinishLaunchingWithOptions
137
-
138
- @return an instance of IterableAPI
86
+ /* *
87
+ * Initializes IterableAPI
88
+ * This method must be called from UIApplicationDelegate's `application:didFinishLaunchingWithOptions:`
89
+ *
90
+ * @note Make sure you also call `setEmail:` or `setUserId:` before making any API calls
91
+ * @param apiKey Iterable Mobile API key
92
+ * @param launchOptions launchOptions object passed from `application:didFinishLaunchingWithOptions:`
93
+ * @param config `IterableConfig` object holding SDK configuration options
139
94
*/
140
- + (IterableAPI *) sharedInstanceWithApiKey : (NSString *)apiKey andUserId : ( NSString *) userId launchOptions : (nullable NSDictionary *) launchOptions ;
95
+ + (void ) initializeWithApiKey : (NSString *)apiKey launchOptions : (nullable NSDictionary *) launchOptions config : (IterableConfig *) config ;
141
96
142
- /* !
143
- @method
144
-
145
- @abstract Initializes a shared instance of Iterable with launchOptions
146
-
147
- @discussion The sharedInstanceWithApiKey with email is preferred over userId.
148
- This method will set up a singleton instance of the `IterableAPI` class for
149
- you using the given project API key. When you want to make calls to Iterable
150
- elsewhere in your code, you can use `sharedInstance`. If launchOptions is there and
151
- the app was launched from a remote push notification, we will track a pushOpen.
152
-
153
- @param apiKey your Iterable apiKey
154
- @param email the email of the user logged in
155
- @param launchOptions launchOptions from application:didFinishLaunchingWithOptions
156
-
157
- @return an instance of IterableAPI
158
- */
159
- + (IterableAPI *) sharedInstanceWithApiKey : (NSString *)apiKey andEmail : (NSString *)email launchOptions : (nullable NSDictionary *)launchOptions ;
97
+ // ///////////////////////////
98
+ // / @name Setting user email or user id
99
+ // ///////////////////////////
160
100
161
- /* !
162
- @method
163
-
164
- @abstract Get the previously instantiated singleton instance of the API
165
-
166
- @discussion Must be initialized with `sharedInstanceWithApiKey:` before
167
- calling this class method.
168
-
169
- @return the existing `IterableAPI` instance
170
-
171
- @warning `sharedInstance` will return `nil` if called before calling `sharedInstanceWithApiKey:andEmail:launchOptions:`
101
+ /* *
102
+ * Set user email used for API calls
103
+ * Calling this or `setUserId:` is required before making any API calls.
104
+ *
105
+ * @note This clears userId and persists the user email so you only need to call this once when the user logs in.
106
+ * @param email User email
172
107
*/
173
- + ( nullable IterableAPI *)sharedInstance ;
108
+ - ( void ) setEmail : ( nullable NSString *)email ;
174
109
175
- /* !
176
- @method
177
-
178
- @abstract Sets the previously instantiated singleton instance of the API to nil
179
-
110
+ /* *
111
+ * Set user ID used for API calls
112
+ * Calling this or `setEmail:` is required before making any API calls.
113
+ *
114
+ * @note This clears user email and persists the user ID so you only need to call this once when the user logs in.
115
+ * @param userId User ID
180
116
*/
181
- + (void )clearSharedInstance ;
117
+ - (void )setUserId : (nullable NSString *) userId ;
182
118
183
119
// ///////////////////////////
184
120
// / @name Registering a token
185
121
// ///////////////////////////
186
122
187
- /* !
188
- @method
189
-
190
- @abstract Register this device's token with Iterable
191
-
192
- @param token The token representing this device/application pair, obtained from
123
+ /* *
124
+ * Register this device's token with Iterable
125
+ * Push integration name and platform are read from `IterableConfig`. If platform is set to `AUTO`, it will
126
+ * read APNS environment from the provisioning profile and use an integration name specified in `IterableConfig`.
127
+ * @param token The token representing this device/application pair, obtained from
193
128
`application:didRegisterForRemoteNotificationsWithDeviceToken`
194
129
after registering for remote notifications
195
- @param appName The application name, as configured in Iterable during set up of the push integration
196
- @param pushServicePlatform The PushServicePlatform to use for this device; dictates whether to register this token in the sandbox or production environment
197
-
198
- @see PushServicePlatform
199
-
200
130
*/
201
- - (void )registerToken : (NSData *)token appName : ( NSString *) appName pushServicePlatform : (PushServicePlatform) pushServicePlatform ;
131
+ - (void )registerToken : (NSData *)token ;
202
132
203
- /* !
204
- @method
205
-
206
- @abstract Register this device's token with Iterable with custom completion blocks
207
-
208
- @param token The token representing this device/application pair, obtained from
209
- `application:didRegisterForRemoteNotificationsWithDeviceToken`
210
- after registering for remote notifications
211
- @param appName The application name, as configured in Iterable during set up of the push integration
212
- @param pushServicePlatform The PushServicePlatform to use for this device; dictates whether to register this token in the sandbox or production environment
213
- @param onSuccess OnSuccessHandler to invoke if token registration is successful
214
- @param onFailure OnFailureHandler to invoke if token registration fails
215
-
216
- @see PushServicePlatform
217
- @see OnSuccessHandler
218
- @see OnFailureHandler
133
+ /* *
134
+ * Register this device's token with Iterable
135
+ * Push integration name and platform are read from `IterableConfig`. If platform is set to `AUTO`, it will
136
+ * read APNS environment from the provisioning profile and use an integration name specified in `IterableConfig`.
137
+ * @param token The token representing this device/application pair, obtained from
138
+ `application:didRegisterForRemoteNotificationsWithDeviceToken`
139
+ after registering for remote notifications
140
+ * @param onSuccess OnSuccessHandler to invoke if token registration is successful
141
+ * @param onFailure OnFailureHandler to invoke if token registration fails
219
142
*/
220
- - (void )registerToken : (NSData *)token appName : ( NSString *) appName pushServicePlatform : (PushServicePlatform) pushServicePlatform onSuccess : (OnSuccessHandler)onSuccess onFailure : (OnFailureHandler)onFailure ;
143
+ - (void )registerToken : (NSData *)token onSuccess : (OnSuccessHandler)onSuccess onFailure : (OnFailureHandler)onFailure ;
221
144
222
145
// ///////////////////////////
223
146
// / @name Disabling a device
@@ -590,8 +513,21 @@ typedef NS_ENUM(NSInteger, PushServicePlatform) {
590
513
591
514
@discussion passes the string of the redirected URL to the callback, returns the original webpageURL if not an iterable link
592
515
*/
593
- +(void ) getAndTrackDeeplink : (NSURL *)webpageURL callbackBlock : (ITEActionBlock)callbackBlock ;
516
+ + (void )getAndTrackDeeplink : (NSURL *)webpageURL callbackBlock : (ITEActionBlock)callbackBlock ;
517
+
518
+ /* *
519
+ * Handles a Universal Link
520
+ * For Iterable links, it will track the click and retrieve the original URL,
521
+ * pass it to `IterableURLDelegate` for handling
522
+ * If it's not an Iterable link, it just passes the same URL to `IterableURLDelegate`
523
+ *
524
+ * @param url the URL obtained from `[NSUserActivity webpageURL]`
525
+ * @return YES if it is an Iterable link, or the value returned from `IterableURLDelegate` otherwise
526
+ */
527
+ + (BOOL )handleUniversalLink : (NSURL *)url ;
594
528
595
529
@end
596
530
597
531
NS_ASSUME_NONNULL_END
532
+
533
+ #import " IterableAPI+Deprecated.h"
0 commit comments