|
1 | 1 | # Optimizely Objective-C SDK Changelog
|
| 2 | +## 1.3.0 |
| 3 | +August 28, 2017 |
| 4 | + |
| 5 | +### New Features |
| 6 | +* Added the forced bucketing feature, which allows customers to force users into variations in real time for QA purposes without requiring datafile downloads from the network. The following APIs have been introduced: |
| 7 | + |
| 8 | +``` |
| 9 | +/** |
| 10 | +* Force a user into a variation for a given experiment. |
| 11 | +* The forced variation value does not persist across application launches. |
| 12 | +* |
| 13 | +* @param experimentKey The key for the experiment. |
| 14 | +* @param userId The user ID to be used for bucketing. |
| 15 | +* @param variationKey The variation key to force the user into. |
| 16 | +* |
| 17 | +* @return boolean A boolean value that indicates if the set completed successfully. |
| 18 | +*/ |
| 19 | +- (BOOL)setForcedVariation:(nonnull NSString *)experimentKey |
| 20 | + userId:(nonnull NSString *)userId |
| 21 | + variationKey:(nonnull NSString *)variationKey; |
| 22 | +``` |
| 23 | + |
| 24 | +``` |
| 25 | +/** |
| 26 | +* Gets the forced variation for a given user and experiment. |
| 27 | +* |
| 28 | +* @param experimentKey The key for the experiment. |
| 29 | +* @param userId The user ID to be used for bucketing. |
| 30 | +* |
| 31 | +* @return The variation the user was bucketed into. This value can be nil if the |
| 32 | +* forced variation fails. |
| 33 | +*/ |
| 34 | +- (nullable OPTLYVariation *)getForcedVariation:(nonnull NSString *)experimentKey |
| 35 | + userId:(nonnull NSString *)userId; |
| 36 | +``` |
| 37 | +- Added the bucketing ID feature, which allows decoupling bucketing from user identification so that a group of users that have the same bucketing ID are put into the same variation. |
| 38 | + |
| 39 | +- User Profile refactor, which includes a class rename to `User Profile Service`, along with the following API additions: |
| 40 | + |
| 41 | +``` |
| 42 | +/** |
| 43 | + * Returns a user entity corresponding to the user ID. |
| 44 | + * |
| 45 | + * @param userId The user id to get the user entity of. |
| 46 | + * @returns A dictionary of the user profile details. |
| 47 | + **/ |
| 48 | +- (nullable NSDictionary *)lookup:(nonnull NSString *)userId; |
| 49 | +``` |
| 50 | +``` |
| 51 | +/** |
| 52 | + * Saves the user profile. |
| 53 | + * |
| 54 | + * @param userProfile The user profile. |
| 55 | + **/ |
| 56 | +- (void)save:(nonnull NSDictionary *)userProfile; |
| 57 | +``` |
| 58 | +- Added default attributes. |
| 59 | + |
| 60 | +### Bug Fixes |
| 61 | +* Fixed crash with string revenues in event tags. |
| 62 | + |
| 63 | +## 1.1.9 |
| 64 | +August 7, 2017 |
| 65 | + |
| 66 | +### New Features |
| 67 | +* Added Apple App Extension support by adding `APPLICATION_EXTENSION_API_ONLY = YES` to Build Settings of all Optimizely frameworks. |
| 68 | + |
| 69 | +### Bug Fixes |
| 70 | +* Fixed potential bugs identified by Apple's Xcode static analyzer Analyze. |
| 71 | + |
| 72 | +## 1.1.8 |
| 73 | +July 28, 2017 |
| 74 | + |
| 75 | +### Bug Fixes |
| 76 | +* Fixed a `dispatchEvent` crash by changing a concurrent queue to a serial queue -- this was causing one of the properties we were accessing not thread-safe. |
| 77 | + |
| 78 | +## 1.1.7 |
| 79 | +July 20, 2017 |
| 80 | + |
| 81 | +### Bug Fixes |
| 82 | +* Fixed a crash caused by a dangling pointer when `dispatchEvent` is called. `strongSelf` captures the state of self (which can be an `eventDispatcher` object or `nil`) at the time the block is called. `strongSelf` will hold onto whatever it is referencing for the duration of the block execution. Therefore, `strongSelf` is still pointing to `pendingDispatchEvents` even when it gets deallocated at the time the `eventDispatcher` is deallocated. This issue was resolved by not capturing `self` using `strongSelf` and keeping the `self` reference to `self` or `weakSelf`. |
| 83 | + |
| 84 | +## 1.1.3 |
| 85 | +July 7, 2017 |
| 86 | + |
| 87 | +### Bug Fixes |
| 88 | +* Added `NS_SWIFT_NOTHROW` to make 4 `variableXxx:...:error:` Swift method signatures more consistent in appearance. |
| 89 | + |
| 90 | +### Breaking Changes |
| 91 | +* Signatures for 2 existing `variableXxx:...:error:` Swift methods changed. |
| 92 | + |
| 93 | +## 1.1.1 |
| 94 | +May 23, 2017 |
| 95 | + |
| 96 | +### New Features |
| 97 | +* Added unexported_symbols.sh to create unexported_symbols.txt which hides all third-party dependency symbols in the Universal frameworks. |
| 98 | + |
| 99 | +### Breaking Changes |
| 100 | +* Supply your own FMDB or JSONModel if you previously counted on Universal frameworks exposing these third-party dependencies. |
| 101 | + |
2 | 102 | ## 1.1.0
|
3 | 103 | May 2, 2017
|
4 | 104 |
|
|
0 commit comments