Skip to content
This repository has been archived by the owner on Aug 17, 2023. It is now read-only.

Commit

Permalink
Merge pull request #79 from thunderheadone/release/9.1.0
Browse files Browse the repository at this point in the history
Update from release/9.1.0
  • Loading branch information
th-skhozin authored Mar 21, 2022
2 parents e01f79a + b16fd7e commit dfa76fa
Show file tree
Hide file tree
Showing 11 changed files with 67 additions and 15 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
#### Version 9.1.0
* [NEW] Added ability to dynamically capture data from other SDKs. For further details on this see [our readme](https://github.com/thunderheadone/one-sdk-ios/blob/master/docs/additional-features-guide.md#capture-data-from-other-sdks).
* [UPDATE] Xcode 13.2 compatible SDK.

#### Version 9.0.0
* [BREAKING] Removed the in-list optimization functionality from the SDK.
* [NEW] Added ability to dynamically switch Workspace configuration while in Admin mode. You can now switch to other spaces easily by simply navigating to the Preview panel in Admin mode and pointing the SDK configuration to another space.
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
- [Additional codeless integration considerations](#additional-codeless-integration-considerations)
* [For Salesforce Interaction Studio integrations](#for-salesforce-interaction-studio-integrations)
* [`ViewController`/`View` lifecycle overriding rules](#viewcontrollerview-lifecycle-overriding-rules)
* [Sending codeless Interactions based on the list of Interactions created under a Touchpoint](#sending-codeless-Interactions-based-on-the-list-of-Interactions-created-under-a-touchpoint)
* [Sending Interaction requests based on the Interaction map](#sending-interaction-requests-based-on-the-interaction-map)
- [Additional features of Thunderhead SDK](docs/additional-features-guide.md)
- [Troubleshooting guide](#troubleshooting-guide)
- [Questions or need help](#questions-or-need-help)
Expand Down Expand Up @@ -194,7 +194,7 @@ The framework listens to a number of `UIViewController` and `UIView` methods to
If you use these methods in your code, please ensure to call super when implementing them.
### Sending codeless Interactions based on the list of Interactions created under a Touchpoint
### Sending Interaction requests based on the Interaction map
In order to reduce the number of unnecessary Interaction requests sent automatically by the SDK, only codeless Interactions with explicit Interaction paths created under a Touchpoint and configured with at least one point are sent to Thunderhead ONE or Salesforce Interaction Studio. This configuration change has been introduced in version 5.3.0 of the iOS SDK.
Expand Down
7 changes: 7 additions & 0 deletions TROUBLESHOOTING-GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ The Thunderhead SDK for iOS Troubleshooting Guide for common implementation issu

- [Installation and archiving troubleshooting](#installation-and-archiving-troubleshooting)
* [No such module 'Thunderhead' Xcode compile error](#no-such-module--thunderhead--xcode-compile-error)
* [CocoaPods could not find compatible versions for pod "Thunderhead" error](#cocoapods-could-not-find-compatible-versions-for-pod--thunderhead--error)
* [Resolve `Undefined symbols for architecture arm64` compile time error](#resolve--undefined-symbols-for-architecture-arm64--compile-time-error)
* [Archive Error SPM - Found an unexpected Mach-O header code: 0x72613c21](#archive-error-spm---found-an-unexpected-mach-o-header-code--0x72613c21)
- [How to resolve `WKWebView` tracking issues](#how-to-resolve-wkwebview-tracking-issues)
Expand All @@ -22,6 +23,12 @@ When integrating the Thunderhead SDK manually into your app, you may encounter t

To resolve this, navigate to **Build Settings**, ensure the **Framework Search Paths** contains the framework filepath. If the framework is placed in your project directory, simply set the framework search path to `$(SRCROOT)` and set it to recursive.

### CocoaPods could not find compatible versions for pod "Thunderhead" error

After the Thunderhead SDK gets released to CocoaPods, there might be a delay of 2-4 hours or more before the Thunderhead pod actually goes live and becomes available to be installed through CocoaPods. Please, make sure the GitHub [SDK latest version](https://github.com/thunderheadone/one-sdk-ios/releases) matches the [CocoaPods version](https://cocoapods.org/pods/Thunderhead).

If the latest Thunderhead SDK version is already available in [CocoaPods](https://cocoapods.org/pods/Thunderhead), but you still have issues integrating the latest Thunderhead pod into your project, please try running the [`pod update`](https://guides.cocoapods.org/using/pod-install-vs-update.html#pod-update) and `pod repo update` command in your project's directory in Terminal.

### Resolve `Undefined symbols for architecture arm64` compile time error

When integrating the Thunderhead SDK via [CocoaPods](https://github.com/thunderheadone/one-sdk-ios#cocoapods), you may encounter this compile time error.
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
2 changes: 1 addition & 1 deletion Thunderhead.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

Pod::Spec.new do |s|
s.name = "Thunderhead"
s.version = "9.0.0"
s.version = "9.1.0"
s.summary = "The Thunderhead SDK for iOS, for integrating the ONE Engagement Hub or Interaction Studio into your iOS application."
s.authors = { "Thunderhead ONE" => "onesupport@thunderhead.com"}
s.homepage = "https://github.com/thunderheadone/one-sdk-ios"
Expand Down
65 changes: 53 additions & 12 deletions docs/additional-features-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@
+ [Opt an end-user out of all city/country level tracking](#opt-an-end-user-out-of-all-citycountry-level-tracking)
+ [Opt an end-user in for all city/country level tracking](#opt-an-end-user-in-for-all-citycountry-level-tracking)
* [Partial opt out/in example](#partial-opt-outin-example)
* [Enable in-list Optimizations](#enable-in-list-optimizations)
* [Capture data from other SDKs](#capture-data-from-other-sdks)
* [Capture data from other SDKs feature compatibility table](#capture-data-from-other-sdks-feature-compatibility-table)
* [Disable `WKWebView` tracking](#disable-wkwebview-tracking)
* [Late initialization and reconfiguration of the SDK](#late-initialization-and-reconfiguration-of-the-sdk)
* [Manually set a specific Interaction path](#manually-set-a-specific-interaction-path)
Expand Down Expand Up @@ -210,22 +211,62 @@ Objective-C:
- When opted out, tracking will stop and locally queued data will be removed.
- For instructions on how to completely remove a user's data from Thunderhead ONE or Salesforce Interaction Studio - see our [api documentation](https://thunderheadone.github.io/one-api/#operation/delete).
### Enable in-list Optimizations
### Capture data from other SDKs
In-list Optimizations are disabled by default. To enable in-list Optimizations, add the following to your app’s Info.plist file and set `DisableInListOptimization` to `false` (boolean value).
To capture data from other SDKs, add the method signatures to `Method Overrides` under `Thunderhead Config`.
![Thunderhead Config App's Info.plist file](https://github.com/thunderheadone/one-sdk-ios/raw/master/images/ThunderheadConfigInfoPlistEntry.png)
For example, given the class interface
```objective-c
@interface THAnalytics : NSObject
+ (void)trackEventWithName:(NSString *)eventName properties:(NSDictionary *)properties;
- (void)logIdentityWithName:(NSString *)identityName parameters:(NSDictionary *)parameters;
- (void)logIdentityWithName:(NSString *)identityName;
@end
```

* To capture data from `class method` `trackEventWithName:properties:`
* To capture data from `instance method` `logIdentityWithName:parameters:`
* To capture data from `instance method` `logIdentityWithName:`

from `THAnalytics` class, add the following to your app's Info.plist file

![Thunderhead Config Method Overrides App's Info.plist file](https://github.com/thunderheadone/one-sdk-ios/raw/master/images/ThunderheadConfigMethodOverridesInfoPlistEntry.png)

```xml
<key>Thunderhead Config</key>
<dict>
<key>Swizzling Options</key>
<dict>
<key>DisableInListOptimization</key>
<false/>
<key>Method Overrides</key>
<array>
<string>THAnalytics+trackEventWithName:properties:</string>
<string>THAnalytics-logIdentityWithName:parameters:</string>
<string>THAnalytics-logIdentityWithName:</string>
</array>
</dict>
</dict>
```
```

The SDK will capture the data when the configured methods are invoked.

*Note:*
- The SDK will only send Codeless Interactions when the first argument (String) matches a configured interaction in the Interaction Map. For additional information, please refer [Sending Interaction requests based on the Interaction map](https://github.com/thunderheadone/one-sdk-ios#sending-interaction-requests-based-on-the-interaction-map).
- When capturing data from class methods, use `+` between `class name` and `method signature`.
- When capturing data from instance methods, use `-` between `class name` and `method signature`.
- Interaction paths with spaces are replaced with an underscore to ensure the Interaction path is valid in ONE.

#### Capture data from other SDKs feature compatibility table

The table below illustrates the compatibility of Capturing data from other SDKs based upon the programming language used.

| App (Language) | Other SDK (Language) | Captures Data |
| -------------- | -------------------- | ------------- |
| Objective-C | Objective-C | YES |
| Objective-C | Swift | YES |
| Swift | Objective-C | YES |
| Swift | Swift | NO |

### Disable `WKWebView` tracking

Expand Down Expand Up @@ -662,7 +703,7 @@ One.whitelistIdentityTransferLinks(["www.google.com","www.uber.com"])
// This example shows how to whitelist the main domain name
// wikipedia.org and any subdomains. For example,
// https://en.wikipedia.org, https://simple.wikipedia.org, etc.
One.whitelistIdentityTransferLinks(["*.wikipedia.org"]
One.whitelistIdentityTransferLinks(["*.wikipedia.org"])
```


Expand Down Expand Up @@ -698,7 +739,7 @@ One.blacklistIdentityTransferLinks(["www.google.com","www.uber.com"])
// This example shows how to blacklist the main domain name
// wikipedia.org and any subdomain. For example,
// https://en.wikipedia.org, https://simple.wikipedia.org, etc.
One.blacklistIdentityTransferLinks(["*.wikipedia.org"]
One.blacklistIdentityTransferLinks(["*.wikipedia.org"])
```


Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit dfa76fa

Please sign in to comment.