From ad7ce9f9ee1600609fb8560e6a857f2c361d572a Mon Sep 17 00:00:00 2001
From: Brad Hesse
Date: Mon, 10 Sep 2018 12:44:38 -0700
Subject: [PATCH] Dynamic framework (#412)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* Add Dynamic Framework
• For historical reasons, OneSignal's iOS framework was a static framework, not a dynamic framework.
• However, for some wrapper SDK's like Flutter, this causes issues with cocoapods. Any cocoapod in a project that uses use_frameworks! must not have any static dependencies
• To fix this, we are considering adding a subspec to fix the problem, but will allow some of our users to test this branch in the mean time
TODO:
• We want this dynamic framework to run on iOS devices as well as run in the iOS simulator (x86_64 and i386 architectures)
• To do this, we've made this a fat framework that contains slices for: arm64, armv7, x86_64, and i386
• However, Apple will not allow app submissions that contain fat frameworks
• So we will soon need to create a build script developers can add to their apps that strips the simulator architecture slices from the framework, so developers don't run into this issue.
• We will want to investigate if we can make this buildscript a part of our cocoapod target, or if it will require developers to add the script to their xcode projects.
* Dynamic Fat Framework
• It appears iOS framework codesigning fails if the framework uses symlinks and versions
• Changed the build script so that the SDK will put all relevant directories in the root of the framework, instead of using symlinks at the root and a Versions/A folder
• Created a new aggregate target that uses a buildscript to create a universal dynamic framework.
• The new aggregate target uses a buildscript to generate two static libraries, one for simulator (x86_64 and i386) and one for real devices (arm64 and armv7), it then uses lipo to combine these into a single dynamic fat framework
NOTE: The framework produced by the new dynamic target does not actually create its own product, it simply generates a new framework in the repo's /iOS_SDK/OneSignalSDK/Framework folder.
* Add Additional Podspec for Dynamic Framework
• We do not want to immediately switch all users to use our new fat dynamic framework
• However we do want it to be available on Cocoapods, so we've created an additional podspec & framework path
• When the project was started years back, the OneSignal-Dynamic target was actually creating a static framework, so I've renamed this target to OneSignal-Static-Framework
• The new OneSignal-Dynamic-Framework is just an aggregate framework. It does not directly produce its own product. Instead it uses a build script to produce a dynamic framework at repo/iOS_SDK/OneSignalSDK/Framework/Dynamic/OneSignal.framework
---
OneSignal.podspec | 2 +-
OneSignalDynamic.podspec | 17 +
README.md | 2 +-
.../xcshareddata/IDEWorkspaceChecks.plist | 8 +
.../OneSignal.framework/Headers/OneSignal.h | 441 ++++++++++++++++++
.../Dynamic/OneSignal.framework/Info.plist | Bin 0 -> 714 bytes
.../Modules/module.modulemap | 6 +
.../Dynamic/OneSignal.framework/OneSignal | Bin 0 -> 2423720 bytes
.../OneSignal.xcodeproj/project.pbxproj | 108 ++++-
.../xcschemes/OneSignal-Dynamic.xcscheme | 6 +-
.../Source/OSNotificationPayload.m | 15 +-
iOS_SDK/OneSignalSDK/Source/OneSignal.m | 4 +-
iOS_SDK/OneSignalSDK/Source/OneSignalHelper.m | 2 +-
.../OneSignalNotificationSettingsIOS10.m | 43 +-
iOS_SDK/OneSignalSDK/UnitTests/UnitTests.m | 18 -
15 files changed, 594 insertions(+), 78 deletions(-)
create mode 100644 OneSignalDynamic.podspec
create mode 100644 iOS_SDK/OneSignalSDK.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
create mode 100755 iOS_SDK/OneSignalSDK/Framework/Dynamic/OneSignal.framework/Headers/OneSignal.h
create mode 100644 iOS_SDK/OneSignalSDK/Framework/Dynamic/OneSignal.framework/Info.plist
create mode 100644 iOS_SDK/OneSignalSDK/Framework/Dynamic/OneSignal.framework/Modules/module.modulemap
create mode 100755 iOS_SDK/OneSignalSDK/Framework/Dynamic/OneSignal.framework/OneSignal
diff --git a/OneSignal.podspec b/OneSignal.podspec
index 86033c59d..c194a79e9 100755
--- a/OneSignal.podspec
+++ b/OneSignal.podspec
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = "OneSignal"
- s.version = "2.8.7"
+ s.version = "2.8.6"
s.summary = "OneSignal push notification library for mobile apps."
s.homepage = "https://onesignal.com"
s.license = { :type => 'MIT', :file => 'LICENSE' }
diff --git a/OneSignalDynamic.podspec b/OneSignalDynamic.podspec
new file mode 100644
index 000000000..453e0ccc7
--- /dev/null
+++ b/OneSignalDynamic.podspec
@@ -0,0 +1,17 @@
+Pod::Spec.new do |s|
+ s.name = "OneSignalDynamic"
+ s.version = "2.8.6"
+ s.summary = "OneSignal push notification library for mobile apps."
+ s.homepage = "https://onesignal.com"
+ s.license = { :type => 'MIT', :file => 'LICENSE' }
+ s.author = { "Joseph Kalash" => "joseph@onesignal.com", "Josh Kasten" => "josh@onesignal.com" , "Brad Hesse" => "brad@onesignal.com"}
+
+ s.source = { :git => "https://github.com/OneSignal/OneSignal-iOS-SDK.git", :tag => s.version.to_s }
+
+ s.platform = :ios
+ s.requires_arc = true
+
+ s.ios.vendored_frameworks = 'iOS_SDK/OneSignalSDK/Framework/Dynamic/OneSignal.framework'
+ s.framework = 'SystemConfiguration', 'UIKit', 'UserNotifications'
+ end
+
\ No newline at end of file
diff --git a/README.md b/README.md
index f1b57fa3e..c949f22a8 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@
### OneSignal iOS SDK
-[](https://cocoapods.org/pods/OneSignal) [](https://github.com/Carthage/Carthage) [](https://travis-ci.org/OneSignal/OneSignal-iOS-SDK)
+[](https://cocoapods.org/pods/OneSignal) [](https://cocoapods.org/pods/OneSignal) [](https://github.com/Carthage/Carthage) [](https://travis-ci.org/OneSignal/OneSignal-iOS-SDK)
---
diff --git a/iOS_SDK/OneSignalSDK.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/iOS_SDK/OneSignalSDK.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 000000000..18d981003
--- /dev/null
+++ b/iOS_SDK/OneSignalSDK.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ IDEDidComputeMac32BitWarning
+
+
+
diff --git a/iOS_SDK/OneSignalSDK/Framework/Dynamic/OneSignal.framework/Headers/OneSignal.h b/iOS_SDK/OneSignalSDK/Framework/Dynamic/OneSignal.framework/Headers/OneSignal.h
new file mode 100755
index 000000000..c750025a0
--- /dev/null
+++ b/iOS_SDK/OneSignalSDK/Framework/Dynamic/OneSignal.framework/Headers/OneSignal.h
@@ -0,0 +1,441 @@
+/**
+ * Modified MIT License
+ *
+ * Copyright 2017 OneSignal
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * 1. The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * 2. All copies of substantial portions of the Software may only be used in connection
+ * with services provided by OneSignal.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+/***
+
+ ### Setting up the SDK ###
+ Follow the documentation from https://documentation.onesignal.com/docs/ios-sdk-setupto setup OneSignal in your app.
+
+ ### API Reference ###
+ Follow the documentation from https://documentation.onesignal.com/docs/ios-sdk-api for a detailed explanation of the API.
+
+ ### Troubleshoot ###
+ Follow the documentation from https://documentation.onesignal.com/docs/troubleshooting-ios to fix common problems.
+
+ For help on how to upgrade your code from 1.* SDK to 2.*: https://documentation.onesignal.com/docs/upgrading-to-ios-sdk-20
+
+ ### More ###
+ iOS Push Cert: https://documentation.onesignal.com/docs/generating-an-ios-push-certificate
+
+***/
+
+#import
+
+#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 100000
+#define XC8_AVAILABLE 1
+#import
+#endif
+
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wstrict-prototypes"
+#pragma clang diagnostic ignored "-Wnullability-completeness"
+
+/* The action type associated to an OSNotificationAction object */
+typedef NS_ENUM(NSUInteger, OSNotificationActionType) {
+ OSNotificationActionTypeOpened,
+ OSNotificationActionTypeActionTaken
+};
+
+/* The way a notification was displayed to the user */
+typedef NS_ENUM(NSUInteger, OSNotificationDisplayType) {
+ /*Notification is silent, or app is in focus but InAppAlertNotifications are disabled*/
+ OSNotificationDisplayTypeNone,
+
+ /*Default UIAlertView display*/
+ OSNotificationDisplayTypeInAppAlert,
+
+ /*iOS native notification display*/
+ OSNotificationDisplayTypeNotification
+};
+
+
+@interface OSNotificationAction : NSObject
+
+/* The type of the notification action */
+@property(readonly)OSNotificationActionType type;
+
+/* The ID associated with the button tapped. NULL when the actionType is NotificationTapped or InAppAlertClosed */
+@property(readonly)NSString* actionID;
+
+@end
+
+
+// #### Notification Payload Received Object
+
+@interface OSNotificationPayload : NSObject
+
+/* Unique Message Identifier */
+@property(readonly)NSString* notificationID;
+
+/* Unique Template Identifier */
+@property(readonly)NSString* templateID;
+
+/* Name of Template */
+@property(readonly)NSString* templateName;
+
+/* True when the key content-available is set to 1 in the aps payload.
+ content-available is used to wake your app when the payload is received.
+ See Apple's documenation for more details.
+ https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623013-application
+*/
+@property(readonly)BOOL contentAvailable;
+
+/* True when the key mutable-content is set to 1 in the aps payload.
+ mutable-content is used to wake your Notification Service Extension to modify a notification.
+ See Apple's documenation for more details.
+ https://developer.apple.com/documentation/usernotifications/unnotificationserviceextension
+ */
+@property(readonly)BOOL mutableContent;
+
+/*
+ Notification category key previously registered to display with.
+ This overrides OneSignal's actionButtons.
+ See Apple's documenation for more details.
+ https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/SupportingNotificationsinYourApp.html#//apple_ref/doc/uid/TP40008194-CH4-SW26
+*/
+@property(readonly)NSString* category;
+
+/* The badge assigned to the application icon */
+@property(readonly)NSUInteger badge;
+@property(readonly)NSInteger badgeIncrement;
+
+/* The sound parameter passed to the notification
+ By default set to UILocalNotificationDefaultSoundName */
+@property(readonly)NSString* sound;
+
+/* Main push content */
+@property(readonly)NSString* title;
+@property(readonly)NSString* subtitle;
+@property(readonly)NSString* body;
+
+/* Web address to launch within the app via a UIWebView */
+@property(readonly)NSString* launchURL;
+
+/* Additional key value properties set within the payload */
+@property(readonly)NSDictionary* additionalData;
+
+/* iOS 10+ : Attachments sent as part of the rich notification */
+@property(readonly)NSDictionary* attachments;
+
+/* Action buttons passed */
+@property(readonly)NSArray *actionButtons;
+
+/* Holds the original payload received
+ Keep the raw value for users that would like to root the push */
+@property(readonly)NSDictionary *rawPayload;
+
+@end
+
+// ## OneSignal OSNotification
+@interface OSNotification : NSObject
+
+/* Notification Payload */
+@property(readonly)OSNotificationPayload* payload;
+
+/* Display method of the notification */
+@property(readonly)OSNotificationDisplayType displayType;
+
+/* Set to true when the user was able to see the notification and reacted to it
+ Set to false when app is in focus and in-app alerts are disabled, or the remote notification is silent. */
+@property(readonly, getter=wasShown)BOOL shown;
+
+/* Set to true if the app was in focus when the notification */
+@property(readonly, getter=wasAppInFocus)BOOL isAppInFocus;
+
+/* Set to true when the received notification is silent
+ Silent means there is no alert, sound, or badge payload in the aps dictionary
+ requires remote-notification within UIBackgroundModes array of the Info.plist */
+@property(readonly, getter=isSilentNotification)BOOL silentNotification;
+
+/* iOS 10+: Indicates whether or not the received notification has mutableContent : 1 assigned to its payload
+ Used for UNNotificationServiceExtension to launch extension.
+*/
+#if XC8_AVAILABLE
+@property(readonly, getter=hasMutableContent)BOOL mutableContent;
+#endif
+
+/* Convert object into an NSString that can be convertible into a custom Dictionary / JSON Object */
+- (NSString*)stringify;
+
+@end
+
+
+@interface OSNotificationOpenedResult : NSObject
+
+@property(readonly)OSNotification* notification;
+@property(readonly)OSNotificationAction *action;
+
+/* Convert object into an NSString that can be convertible into a custom Dictionary / JSON Object */
+- (NSString*)stringify;
+
+@end;
+
+
+typedef NS_ENUM(NSInteger, OSNotificationPermission) {
+ // The user has not yet made a choice regarding whether your app can show notifications.
+ OSNotificationPermissionNotDetermined = 0,
+
+ // The application is not authorized to post user notifications.
+ OSNotificationPermissionDenied,
+
+ // The application is authorized to post user notifications.
+ OSNotificationPermissionAuthorized
+};
+
+
+
+// Permission Classes
+@interface OSPermissionState : NSObject
+
+@property (readonly, nonatomic) BOOL hasPrompted;
+@property (readonly, nonatomic) OSNotificationPermission status;
+- (NSDictionary*)toDictionary;
+
+@end
+
+@interface OSPermissionStateChanges : NSObject
+
+@property (readonly) OSPermissionState* to;
+@property (readonly) OSPermissionState* from;
+- (NSDictionary*)toDictionary;
+
+@end
+
+@protocol OSPermissionObserver
+- (void)onOSPermissionChanged:(OSPermissionStateChanges*)stateChanges;
+@end
+
+
+// Subscription Classes
+@interface OSSubscriptionState : NSObject
+
+@property (readonly, nonatomic) BOOL subscribed; // (yes only if userId, pushToken, and setSubscription exists / are true)
+@property (readonly, nonatomic) BOOL userSubscriptionSetting; // returns setSubscription state.
+@property (readonly, nonatomic) NSString* userId; // AKA OneSignal PlayerId
+@property (readonly, nonatomic) NSString* pushToken; // AKA Apple Device Token
+- (NSDictionary*)toDictionary;
+
+@end
+
+
+@interface OSEmailSubscriptionState : NSObject
+@property (readonly, nonatomic) NSString* emailUserId; // The new Email user ID
+@property (readonly, nonatomic) NSString *emailAddress;
+@property (readonly, nonatomic) BOOL subscribed;
+- (NSDictionary*)toDictionary;
+@end
+
+@interface OSSubscriptionStateChanges : NSObject
+@property (readonly) OSSubscriptionState* to;
+@property (readonly) OSSubscriptionState* from;
+- (NSDictionary*)toDictionary;
+@end
+
+@interface OSEmailSubscriptionStateChanges : NSObject
+@property (readonly) OSEmailSubscriptionState* to;
+@property (readonly) OSEmailSubscriptionState* from;
+- (NSDictionary*)toDictionary;
+@end
+
+@protocol OSSubscriptionObserver
+- (void)onOSSubscriptionChanged:(OSSubscriptionStateChanges*)stateChanges;
+@end
+
+@protocol OSEmailSubscriptionObserver
+- (void)onOSEmailSubscriptionChanged:(OSEmailSubscriptionStateChanges*)stateChanges;
+@end
+
+
+
+// Permission+Subscription Classes
+@interface OSPermissionSubscriptionState : NSObject
+
+@property (readonly) OSPermissionState* permissionStatus;
+@property (readonly) OSSubscriptionState* subscriptionStatus;
+@property (readonly) OSEmailSubscriptionState *emailSubscriptionStatus;
+- (NSDictionary*)toDictionary;
+
+@end
+
+
+typedef void (^OSWebOpenURLResultBlock)(BOOL shouldOpen);
+
+typedef void (^OSResultSuccessBlock)(NSDictionary* result);
+typedef void (^OSFailureBlock)(NSError* error);
+
+/*Block for notifying availability of the User's ID and push token*/
+typedef void (^OSIdsAvailableBlock)(NSString* userId, NSString* pushToken);
+
+/*Block for handling the reception of a remote notification */
+typedef void (^OSHandleNotificationReceivedBlock)(OSNotification* notification);
+
+/*Block for handling a user reaction to a notification*/
+typedef void (^OSHandleNotificationActionBlock)(OSNotificationOpenedResult * result);
+
+/*Dictionary of keys to pass alongside the init settings*/
+
+/*Let OneSignal directly prompt for push notifications on init*/
+extern NSString * const kOSSettingsKeyAutoPrompt;
+
+/*Enable the default in-app alerts*/
+extern NSString * const kOSSettingsKeyInAppAlerts;
+
+/*Enable In-App display of Launch URLs*/
+extern NSString * const kOSSettingsKeyInAppLaunchURL;
+
+/*Prompt user yes/no to open URL's from push notifications*/
+extern NSString * const kOSSSettingsKeyPromptBeforeOpeningPushURL;
+
+/* iOS10 +
+ Set notification's in-focus display option.
+ Value must be an OSNotificationDisplayType enum
+*/
+extern NSString * const kOSSettingsKeyInFocusDisplayOption;
+
+
+
+// ======= OneSignal Class Interface =========
+@interface OneSignal : NSObject
+
+extern NSString* const ONESIGNAL_VERSION;
+
+typedef NS_ENUM(NSUInteger, ONE_S_LOG_LEVEL) {
+ ONE_S_LL_NONE, ONE_S_LL_FATAL, ONE_S_LL_ERROR, ONE_S_LL_WARN, ONE_S_LL_INFO, ONE_S_LL_DEBUG, ONE_S_LL_VERBOSE
+};
+
+
+/**
+ Initialize OneSignal.
+ Sends push token to OneSignal so you can later send notifications.
+*/
+
+// - Initialization
++ (id)initWithLaunchOptions:(NSDictionary*)launchOptions appId:(NSString*)appId;
++ (id)initWithLaunchOptions:(NSDictionary*)launchOptions appId:(NSString*)appId handleNotificationAction:(OSHandleNotificationActionBlock)actionCallback;
++ (id)initWithLaunchOptions:(NSDictionary*)launchOptions appId:(NSString*)appId handleNotificationAction:(OSHandleNotificationActionBlock)actionCallback settings:(NSDictionary*)settings;
++ (id)initWithLaunchOptions:(NSDictionary*)launchOptions appId:(NSString*)appId handleNotificationReceived:(OSHandleNotificationReceivedBlock)receivedCallback handleNotificationAction:(OSHandleNotificationActionBlock)actionCallback settings:(NSDictionary*)settings;
+
+// - Privacy
++ (void)consentGranted:(BOOL)granted;
++ (BOOL)requiresUserPrivacyConsent; // tells your application if privacy consent is still needed from the current user
++ (void)setRequiresUserPrivacyConsent:(BOOL)required; //used by wrapper SDK's to require user privacy consent
+
+@property (class) OSNotificationDisplayType inFocusDisplayType;
+
++ (NSString*)app_id;
++ (NSString*)sdk_version_raw;
++ (NSString*)sdk_semantic_version;
+
+// Only use if you set kOSSettingsKeyAutoPrompt to false
++ (void)registerForPushNotifications __deprecated_msg("Please use promptForPushNotificationsWithUserResponse instead.");
++ (void)promptForPushNotificationsWithUserResponse:(void(^)(BOOL accepted))completionHandler;
+
+// - Logging
++ (void)setLogLevel:(ONE_S_LOG_LEVEL)logLevel visualLevel:(ONE_S_LOG_LEVEL)visualLogLevel;
++ (void) onesignal_Log:(ONE_S_LOG_LEVEL)logLevel message:(NSString*)message;
+
+// - Tagging
++ (void)sendTag:(NSString*)key value:(NSString*)value onSuccess:(OSResultSuccessBlock)successBlock onFailure:(OSFailureBlock)failureBlock;
++ (void)sendTag:(NSString*)key value:(NSString*)value;
++ (void)sendTags:(NSDictionary*)keyValuePair onSuccess:(OSResultSuccessBlock)successBlock onFailure:(OSFailureBlock)failureBlock;
++ (void)sendTags:(NSDictionary*)keyValuePair;
++ (void)sendTagsWithJsonString:(NSString*)jsonString;
++ (void)getTags:(OSResultSuccessBlock)successBlock onFailure:(OSFailureBlock)failureBlock;
++ (void)getTags:(OSResultSuccessBlock)successBlock;
++ (void)deleteTag:(NSString*)key onSuccess:(OSResultSuccessBlock)successBlock onFailure:(OSFailureBlock)failureBlock;
++ (void)deleteTag:(NSString*)key;
++ (void)deleteTags:(NSArray*)keys onSuccess:(OSResultSuccessBlock)successBlock onFailure:(OSFailureBlock)failureBlock;
++ (void)deleteTags:(NSArray*)keys;
++ (void)deleteTagsWithJsonString:(NSString*)jsonString;
+// Optional method that sends us the user's email as an anonymized hash so that we can better target and personalize notifications sent to that user across their devices.
+// Sends as MD5 and SHA1 of the provided email
++ (void)syncHashedEmail:(NSString*)email __deprecated_msg("Please refer to our new Email methods/functionality such as setEmail(). This method will be removed in a future version of the OneSignal SDK");
+
+// - Subscription and Permissions
++ (void)IdsAvailable:(OSIdsAvailableBlock)idsAvailableBlock __deprecated_msg("Please use getPermissionSubscriptionState or addSubscriptionObserver and addPermissionObserver instead.");
+
++ (OSPermissionSubscriptionState*)getPermissionSubscriptionState;
+
++ (void)addPermissionObserver:(NSObject*)observer;
++ (void)removePermissionObserver:(NSObject*)observer;
+
++ (void)addSubscriptionObserver:(NSObject*)observer;
++ (void)removeSubscriptionObserver:(NSObject*)observer;
+
++ (void)addEmailSubscriptionObserver:(NSObject*)observer;
++ (void)removeEmailSubscriptionObserver:(NSObject*)observer;
+
++ (void)setSubscription:(BOOL)enable;
+
+// - Posting Notification
++ (void)postNotification:(NSDictionary*)jsonData;
++ (void)postNotification:(NSDictionary*)jsonData onSuccess:(OSResultSuccessBlock)successBlock onFailure:(OSFailureBlock)failureBlock;
++ (void)postNotificationWithJsonString:(NSString*)jsonData onSuccess:(OSResultSuccessBlock)successBlock onFailure:(OSFailureBlock)failureBlock;
++ (NSString*)parseNSErrorAsJsonString:(NSError*)error;
+
+// - Request and track user's location
++ (void)promptLocation;
++ (void)setLocationShared:(BOOL)enable;
+
+
+// Only used for wrapping SDKs, such as Unity, Cordova, Xamarin, etc.
++ (void)setMSDKType:(NSString*)type;
+
+
+// iOS 10 only
+// Process from Notification Service Extension.
+// Used for iOS Media Attachemtns and Action Buttons.
++ (UNMutableNotificationContent*)didReceiveNotificationExtensionRequest:(UNNotificationRequest*)request withMutableNotificationContent:(UNMutableNotificationContent*)replacementContent;
++ (UNMutableNotificationContent*)serviceExtensionTimeWillExpireRequest:(UNNotificationRequest*)request withMutableNotificationContent:(UNMutableNotificationContent*)replacementContent;
+
+// Email methods
+
+// Typedefs defining completion blocks for email & simultaneous HTTP requests
+typedef void (^OSEmailFailureBlock)(NSError* error);
+typedef void (^OSEmailSuccessBlock)();
+
+// Allows you to set the email for this user.
+// Email Auth Token is a (recommended) optional parameter that should *NOT* be generated on the client.
+// For security purposes, the emailAuthToken should be generated by your backend server.
+// If you do not have a backend server for your application, use the version of thge setEmail: method without an emailAuthToken parameter.
++ (void)setEmail:(NSString * _Nonnull)email withEmailAuthHashToken:(NSString * _Nullable)hashToken withSuccess:(OSEmailSuccessBlock _Nullable)successBlock withFailure:(OSEmailFailureBlock _Nullable)failureBlock;
+
+// Sets email without an authentication token
++ (void)setEmail:(NSString * _Nonnull)email withSuccess:(OSEmailSuccessBlock _Nullable)successBlock withFailure:(OSEmailFailureBlock _Nullable)failureBlock;
+
+// Logs the device out of the current email.
++ (void)logoutEmailWithSuccess:(OSEmailSuccessBlock _Nullable)successBlock withFailure:(OSEmailFailureBlock _Nullable)failureBlock;
+
+//convenience - no completion blocks
++ (void)logoutEmail;
++ (void)setEmail:(NSString * _Nonnull)email;
++ (void)setEmail:(NSString * _Nonnull)email withEmailAuthHashToken:(NSString * _Nullable)hashToken;
+
+@end
+
+#pragma clang diagnostic pop
diff --git a/iOS_SDK/OneSignalSDK/Framework/Dynamic/OneSignal.framework/Info.plist b/iOS_SDK/OneSignalSDK/Framework/Dynamic/OneSignal.framework/Info.plist
new file mode 100644
index 0000000000000000000000000000000000000000..d64879243e2a729b5a06026f5a901e67fce79fb9
GIT binary patch
literal 714
zcmYk2&2G~`6ouywe+3GeHignc)6yTHNVV)z2oVdU)>sNrNQj*@MNur*nIt2|W6O3b
z0x!Uh2VezDHXyNum*54uV8a5z60yT^ZPMA?d+s^k=+5kWoCTpQACeisCr+L^eP-h9
zx$~13E@sHobav*_<=HE9v-4N4Lq%AlJ?09NOsC$X7t|hv);_1lhQ&@4WnD&nlPsjkqUgFRv%`qD{9%Lo
zLDaQU_lf01H)K;;we06sj~YWSn$D+Fz3=*ALh7NqxGkL9C_!&W1V^5oPQ5B-zl)
zyCq$bf%QR66XhwWOGaOB*m2L%3UpAXfkg^xq+c5
z(pD=~BVoveEu~S=Hf34X?@RLgTk8Y}Mib}`Dk6$rqBrOx`hvcp-!KU|SceDj7}~%f
zfLHJu-ogj?1fSt69Kv__0YBjv{DHqXhgb0i-oy{Fic7eHYuG^X!EjX3?W86JH~s-<
CwcD-$
literal 0
HcmV?d00001
diff --git a/iOS_SDK/OneSignalSDK/Framework/Dynamic/OneSignal.framework/Modules/module.modulemap b/iOS_SDK/OneSignalSDK/Framework/Dynamic/OneSignal.framework/Modules/module.modulemap
new file mode 100644
index 000000000..a3424cd21
--- /dev/null
+++ b/iOS_SDK/OneSignalSDK/Framework/Dynamic/OneSignal.framework/Modules/module.modulemap
@@ -0,0 +1,6 @@
+framework module OneSignal {
+ umbrella header "OneSignal.h"
+
+ export *
+ module * { export * }
+}
diff --git a/iOS_SDK/OneSignalSDK/Framework/Dynamic/OneSignal.framework/OneSignal b/iOS_SDK/OneSignalSDK/Framework/Dynamic/OneSignal.framework/OneSignal
new file mode 100755
index 0000000000000000000000000000000000000000..f3e9590dbcfa9d30e3ee763bf9f3450fa9221cb7
GIT binary patch
literal 2423720
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
U{07?VryXLDEEu@
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