Adds VS App Center analytics + crash reporting

Currently tracks install, refresh, and update app events.
This commit is contained in:
Riley Testut
2020-03-31 14:31:34 -07:00
parent cd89741827
commit 193ca28c98
71 changed files with 3548 additions and 314 deletions

View File

@@ -0,0 +1,13 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
#import <Foundation/Foundation.h>
#import "MSAbstractLog.h"
#import "MSAnalytics.h"
#import "MSAnalyticsTransmissionTarget.h"
#import "MSAnalyticsAuthenticationProvider.h"
#import "MSAnalyticsAuthenticationProviderDelegate.h"
#import "MSConstants+Flags.h"
#import "MSEventLog.h"
#import "MSEventProperties.h"

View File

@@ -0,0 +1,13 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
#ifndef MS_ABSTRACT_LOG_H
#define MS_ABSTRACT_LOG_H
#import <Foundation/Foundation.h>
@interface MSAbstractLog : NSObject
@end
#endif

View File

@@ -0,0 +1,213 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
#import "MSAnalyticsTransmissionTarget.h"
#import "MSServiceAbstract.h"
@class MSEventProperties;
NS_ASSUME_NONNULL_BEGIN
/**
* App Center analytics service.
*/
@interface MSAnalytics : MSServiceAbstract
/**
* Track an event.
*
* @param eventName Event name. Cannot be `nil` or empty.
*
* @discussion Validation rules apply depending on the configured secret.
*
* For App Center, the name cannot be longer than 256 and is truncated otherwise.
*
* For One Collector, the name needs to match the `[a-zA-Z0-9]((\.(?!(\.|$)))|[_a-zA-Z0-9]){3,99}` regular expression.
*/
+ (void)trackEvent:(NSString *)eventName;
/**
* Track a custom event with optional string properties.
*
* @param eventName Event name. Cannot be `nil` or empty.
* @param properties Dictionary of properties. Keys and values must not be `nil`.
*
* @discussion Additional validation rules apply depending on the configured secret.
*
* For App Center:
*
* - The event name cannot be longer than 256 and is truncated otherwise.
*
* - The property names cannot be empty.
*
* - The property names and values are limited to 125 characters each (truncated).
*
* - The number of properties per event is limited to 20 (truncated).
*
*
* For One Collector:
*
* - The event name needs to match the `[a-zA-Z0-9]((\.(?!(\.|$)))|[_a-zA-Z0-9]){3,99}` regular expression.
*
* - The `baseData` and `baseDataType` properties are reserved and thus discarded.
*
* - The full event size when encoded as a JSON string cannot be larger than 1.9MB.
*/
+ (void)trackEvent:(NSString *)eventName withProperties:(nullable NSDictionary<NSString *, NSString *> *)properties;
/**
* Track a custom event with optional string properties.
*
* @param eventName Event name. Cannot be `nil` or empty.
* @param properties Dictionary of properties. Keys and values must not be `nil`.
* @param flags Optional flags. Events tracked with the MSFlagsCritical flag will take precedence over all other events in
* storage. An event tracked with this option will only be dropped if storage must make room for a newer event that is also marked with the
* MSFlagsCritical flag.
*
* @discussion Additional validation rules apply depending on the configured secret.
*
* For App Center:
*
* - The event name cannot be longer than 256 and is truncated otherwise.
*
* - The property names cannot be empty.
*
* - The property names and values are limited to 125 characters each (truncated).
*
* - The number of properties per event is limited to 20 (truncated).
*
*
* For One Collector:
*
* - The event name needs to match the `[a-zA-Z0-9]((\.(?!(\.|$)))|[_a-zA-Z0-9]){3,99}` regular expression.
*
* - The `baseData` and `baseDataType` properties are reserved and thus discarded.
*
* - The full event size when encoded as a JSON string cannot be larger than 1.9MB.
*/
+ (void)trackEvent:(NSString *)eventName withProperties:(nullable NSDictionary<NSString *, NSString *> *)properties flags:(MSFlags)flags;
/**
* Track a custom event with name and optional typed properties.
*
* @param eventName Event name.
* @param properties Typed properties.
*
* @discussion The following validation rules are applied:
*
* The name cannot be null or empty.
*
* The property names or values cannot be null.
*
* Double values must be finite (NaN or Infinite values are discarded).
*
* Additional validation rules apply depending on the configured secret.
*
*
* For App Center:
*
* - The event name cannot be longer than 256 and is truncated otherwise.
*
* - The property names cannot be empty.
*
* - The property names and values are limited to 125 characters each (truncated).
*
* - The number of properties per event is limited to 20 (truncated).
*
*
* For One Collector:
*
* - The event name needs to match the `[a-zA-Z0-9]((\.(?!(\.|$)))|[_a-zA-Z0-9]){3,99}` regular expression.
*
* - The `baseData` and `baseDataType` properties are reserved and thus discarded.
*
* - The full event size when encoded as a JSON string cannot be larger than 1.9MB.
*/
+ (void)trackEvent:(NSString *)eventName
withTypedProperties:(nullable MSEventProperties *)properties NS_SWIFT_NAME(trackEvent(_:withProperties:));
/**
* Track a custom event with name and optional typed properties.
*
* @param eventName Event name.
* @param properties Typed properties.
* @param flags Optional flags. Events tracked with the MSFlagsCritical flag will take precedence over all other events in
* storage. An event tracked with this option will only be dropped if storage must make room for a newer event that is also marked with the
* MSFlagsCritical flag.
*
* @discussion The following validation rules are applied:
*
* The name cannot be null or empty.
*
* The property names or values cannot be null.
*
* Double values must be finite (NaN or Infinite values are discarded).
*
* Additional validation rules apply depending on the configured secret.
*
*
* For App Center:
*
* - The event name cannot be longer than 256 and is truncated otherwise.
*
* - The property names cannot be empty.
*
* - The property names and values are limited to 125 characters each (truncated).
*
* - The number of properties per event is limited to 20 (truncated).
*
*
* For One Collector:
*
* - The event name needs to match the `[a-zA-Z0-9]((\.(?!(\.|$)))|[_a-zA-Z0-9]){3,99}` regular expression.
*
* - The `baseData` and `baseDataType` properties are reserved and thus discarded.
*
* - The full event size when encoded as a JSON string cannot be larger than 1.9MB.
*/
+ (void)trackEvent:(NSString *)eventName
withTypedProperties:(nullable MSEventProperties *)properties
flags:(MSFlags)flags NS_SWIFT_NAME(trackEvent(_:withProperties:flags:));
/**
* Pause transmission of Analytics logs. While paused, Analytics logs are saved to disk.
*
* @see resume
*/
+ (void)pause;
/**
* Resume transmission of Analytics logs. Any Analytics logs that accumulated on disk while paused are sent to the
* server.
*
* @see pause
*/
+ (void)resume;
/**
* Get a transmission target.
*
* @param token The token of the transmission target to retrieve.
*
* @returns The transmission target object.
*
* @discussion This method does not need to be annotated with
* NS_SWIFT_NAME(transmissionTarget(forToken:)) as this is a static method that
* doesn't get translated like a setter in Swift.
*
* @see MSAnalyticsTransmissionTarget for comparison.
*/
+ (MSAnalyticsTransmissionTarget *)transmissionTargetForToken:(NSString *)token;
/**
* Set the send time interval for non-critical logs.
* Must be between 3 seconds and 86400 seconds (1 day).
* Must be called before Analytics service start.
*
* @param interval The flush interval for logs.
*/
+ (void)setTransmissionInterval:(NSUInteger)interval;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,65 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
#import <Foundation/Foundation.h>
#import "MSAnalyticsAuthenticationProviderDelegate.h"
/**
* Different authentication types, e.g. MSA Compact, MSA Delegate, AAD,... .
*/
typedef NS_ENUM(NSUInteger, MSAnalyticsAuthenticationType) {
/**
* AuthenticationType MSA Compact.
*/
MSAnalyticsAuthenticationTypeMsaCompact,
/**
* AuthenticationType MSA Delegate.
*/
MSAnalyticsAuthenticationTypeMsaDelegate
};
NS_ASSUME_NONNULL_BEGIN
@interface MSAnalyticsAuthenticationProvider : NSObject
/**
* The type.
*/
@property(nonatomic, readonly, assign) MSAnalyticsAuthenticationType type;
/**
* The ticket key for this authentication provider.
*/
@property(nonatomic, readonly, copy) NSString *ticketKey;
/**
* The ticket key as hash.
*/
@property(nonatomic, readonly, copy) NSString *ticketKeyHash;
@property(nonatomic, readonly, weak) id<MSAnalyticsAuthenticationProviderDelegate> delegate;
/**
* Create a new authentication provider.
*
* @param type The type for the provider, e.g. MSA.
* @param ticketKey The ticket key for the provider.
* @param delegate The delegate.
*
* @return A new authentication provider.
*/
- (instancetype)initWithAuthenticationType:(MSAnalyticsAuthenticationType)type
ticketKey:(NSString *)ticketKey
delegate:(id<MSAnalyticsAuthenticationProviderDelegate>)delegate;
/**
* Check expiration.
*/
- (void)checkTokenExpiry;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,24 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
#import <Foundation/Foundation.h>
@class MSAnalyticsAuthenticationProvider;
/**
* Completion handler that returns the authentication token and the expiry date.
*/
typedef void (^MSAnalyticsAuthenticationProviderCompletionBlock)(NSString *token, NSDate *expiryDate);
@protocol MSAnalyticsAuthenticationProviderDelegate <NSObject>
/**
* Required method that needs to be called from within your authentication flow to provide the authentication token and expiry date.
*
* @param authenticationProvider The authentication provider.
* @param completionHandler The completion handler.
*/
- (void)authenticationProvider:(MSAnalyticsAuthenticationProvider *)authenticationProvider
acquireTokenWithCompletionHandler:(MSAnalyticsAuthenticationProviderCompletionBlock)completionHandler;
@end

View File

@@ -0,0 +1,147 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
#import <Foundation/Foundation.h>
#import "MSAnalyticsAuthenticationProvider.h"
#import "MSConstants+Flags.h"
#import "MSPropertyConfigurator.h"
@class MSEventProperties;
NS_ASSUME_NONNULL_BEGIN
@interface MSAnalyticsTransmissionTarget : NSObject
/**
* Property configurator.
*/
@property(nonatomic, readonly, strong) MSPropertyConfigurator *propertyConfigurator;
+ (void)addAuthenticationProvider:(MSAnalyticsAuthenticationProvider *)authenticationProvider
NS_SWIFT_NAME(addAuthenticationProvider(authenticationProvider:));
/**
* Track an event.
*
* @param eventName event name.
*/
- (void)trackEvent:(NSString *)eventName;
/**
* Track an event.
*
* @param eventName event name.
* @param properties dictionary of properties.
*/
- (void)trackEvent:(NSString *)eventName withProperties:(nullable NSDictionary<NSString *, NSString *> *)properties;
/**
* Track an event.
*
* @param eventName event name.
* @param properties dictionary of properties.
* @param flags Optional flags. Events tracked with the MSFlagsCritical flag will take precedence over all other events in
* storage. An event tracked with this option will only be dropped if storage must make room for a newer event that is also marked with the
* MSFlagsCritical flag.
*/
- (void)trackEvent:(NSString *)eventName withProperties:(nullable NSDictionary<NSString *, NSString *> *)properties flags:(MSFlags)flags;
/**
* Track a custom event with name and optional typed properties.
*
* @param eventName Event name.
* @param properties Typed properties.
*
* @discussion The following validation rules are applied:
*
* The name cannot be null or empty.
*
* The property names or values cannot be null.
*
* Double values must be finite (NaN or Infinite values are discarded).
*
* Additional validation rules apply depending on the configured secret.
*
* - The event name needs to match the `[a-zA-Z0-9]((\.(?!(\.|$)))|[_a-zA-Z0-9]){3,99}` regular expression.
*
* - The `baseData` and `baseDataType` properties are reserved and thus discarded.
*
* - The full event size when encoded as a JSON string cannot be larger than 1.9MB.
*/
- (void)trackEvent:(NSString *)eventName
withTypedProperties:(nullable MSEventProperties *)properties NS_SWIFT_NAME(trackEvent(_:withProperties:));
/**
* Track a custom event with name and optional typed properties.
*
* @param eventName Event name.
* @param properties Typed properties.
* @param flags Optional flags. Events tracked with the MSFlagsCritical flag will take precedence over all other events in
* storage. An event tracked with this option will only be dropped if storage must make room for a newer event that is also marked with the
* MSFlagsCritical flag.
*
* @discussion The following validation rules are applied:
*
* The name cannot be null or empty.
*
* The property names or values cannot be null.
*
* Double values must be finite (NaN or Infinite values are discarded).
*
* Additional validation rules apply depending on the configured secret.
*
* - The event name needs to match the `[a-zA-Z0-9]((\.(?!(\.|$)))|[_a-zA-Z0-9]){3,99}` regular expression.
*
* - The `baseData` and `baseDataType` properties are reserved and thus discarded.
*
* - The full event size when encoded as a JSON string cannot be larger than 1.9MB.
*/
- (void)trackEvent:(NSString *)eventName
withTypedProperties:(nullable MSEventProperties *)properties
flags:(MSFlags)flags NS_SWIFT_NAME(trackEvent(_:withProperties:flags:));
/**
* Get a nested transmission target.
*
* @param token The token of the transmission target to retrieve.
*
* @returns A transmission target object nested to this parent transmission target.
*/
- (MSAnalyticsTransmissionTarget *)transmissionTargetForToken:(NSString *)token NS_SWIFT_NAME(transmissionTarget(forToken:));
/**
* Enable or disable this transmission target. It will also enable or disable nested transmission targets.
*
* @param isEnabled YES to enable, NO to disable.
*
* @see isEnabled
*/
- (void)setEnabled:(BOOL)isEnabled;
/**
* Check whether this transmission target is enabled or not.
*
* @return YES if enabled, NO otherwise.
*
* @see setEnabled:
*/
- (BOOL)isEnabled;
/**
* Pause sending logs for the transmission target. It doesn't pause any of its decendants.
*
* @see resume
*/
- (void)pause;
/**
* Resume sending logs for the transmission target.
*
* @see pause
*/
- (void)resume;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,13 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
#import <Foundation/Foundation.h>
typedef NS_OPTIONS(NSUInteger, MSFlags) {
MSFlagsNone = (0 << 0), // => 00000000
MSFlagsNormal = (1 << 0), // => 00000001
MSFlagsCritical = (1 << 1), // => 00000010
MSFlagsPersistenceNormal DEPRECATED_MSG_ATTRIBUTE("please use MSFlagsNormal") = MSFlagsNormal,
MSFlagsPersistenceCritical DEPRECATED_MSG_ATTRIBUTE("please use MSFlagsCritical") = MSFlagsCritical,
MSFlagsDefault = MSFlagsNormal
};

View File

@@ -0,0 +1,21 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
#import "MSLogWithNameAndProperties.h"
@class MSEventProperties;
@class MSMetadataExtension;
@interface MSEventLog : MSLogWithNameAndProperties
/**
* Unique identifier for this event.
*/
@property(nonatomic, copy) NSString *eventId;
/**
* Event properties.
*/
@property(nonatomic, strong) MSEventProperties *typedProperties;
@end

View File

@@ -0,0 +1,55 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
/**
* Contains typed event properties.
*/
@interface MSEventProperties : NSObject
/**
* Set a string property.
*
* @param value Property value.
* @param key Property key.
*/
- (instancetype)setString:(NSString *)value forKey:(NSString *)key NS_SWIFT_NAME(setEventProperty(_:forKey:));
/**
* Set a double property.
*
* @param value Property value. Must be finite (`NAN` and `INFINITY` not allowed).
* @param key Property key.
*/
- (instancetype)setDouble:(double)value forKey:(NSString *)key NS_SWIFT_NAME(setEventProperty(_:forKey:));
/**
* Set a 64-bit integer property.
*
* @param value Property value.
* @param key Property key.
*/
- (instancetype)setInt64:(int64_t)value forKey:(NSString *)key NS_SWIFT_NAME(setEventProperty(_:forKey:));
/**
* Set a boolean property.
*
* @param value Property value.
* @param key Property key.
*/
- (instancetype)setBool:(BOOL)value forKey:(NSString *)key NS_SWIFT_NAME(setEventProperty(_:forKey:));
/**
* Set a date property.
*
* @param value Property value.
* @param key Property key.
*/
- (instancetype)setDate:(NSDate *)value forKey:(NSString *)key NS_SWIFT_NAME(setEventProperty(_:forKey:));
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,15 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
#import <Foundation/Foundation.h>
#import "MSLogWithProperties.h"
@interface MSLogWithNameAndProperties : MSLogWithProperties
/**
* Name of the event.
*/
@property(nonatomic, copy) NSString *name;
@end

View File

@@ -0,0 +1,20 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
#ifndef MS_LOG_WITH_PROPERTIES_H
#define MS_LOG_WITH_PROPERTIES_H
#import <Foundation/Foundation.h>
#import "MSAbstractLog.h"
@interface MSLogWithProperties : MSAbstractLog
/**
* Additional key/value pair parameters. [optional]
*/
@property(nonatomic, strong) NSDictionary<NSString *, NSString *> *properties;
@end
#endif

View File

@@ -0,0 +1,119 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface MSPropertyConfigurator : NSObject
/**
* Override the application version.
*
* @param appVersion New application version for a transmission target.
*/
- (void)setAppVersion:(nullable NSString *)appVersion;
/**
* Override the application name.
*
* @param appName New application name for a transmission target.
*/
- (void)setAppName:(nullable NSString *)appName;
/**
* Override the application locale.
*
* @param appLocale New application locale for a transmission target.
*/
- (void)setAppLocale:(nullable NSString *)appLocale;
/**
* Set the user identifier.
* The user identifier needs to start with c: or i: or d: or w: prefixes.
*
* @param userId user identifier.
*/
- (void)setUserId:(nullable NSString *)userId;
/**
* Set a string event property to be attached to events tracked by this transmission target and its child transmission targets.
*
* @param propertyValue Property value.
* @param propertyKey Property key.
*
* @discussion A property set in a child transmission target overrides a property with the same key inherited from its parents. Also, the
* properties passed to the `trackEvent:withProperties:` or `trackEvent:withTypedProperties:` override any property with the same key from
* the transmission target itself or its parents.
*/
- (void)setEventPropertyString:(NSString *)propertyValue forKey:(NSString *)propertyKey NS_SWIFT_NAME(setEventProperty(_:forKey:));
/**
* Set a double event property to be attached to events tracked by this transmission target and its child transmission targets.
*
* @param propertyValue Property value. Must be finite (`NAN` and `INFINITY` not allowed).
* @param propertyKey Property key.
*
* @discussion A property set in a child transmission target overrides a property with the same key inherited from its parents. Also, the
* properties passed to the `trackEvent:withProperties:` or `trackEvent:withTypedProperties:` override any property with the same key from
* the transmission target itself or its parents.
*/
- (void)setEventPropertyDouble:(double)propertyValue forKey:(NSString *)propertyKey NS_SWIFT_NAME(setEventProperty(_:forKey:));
/**
* Set a 64-bit integer event property to be attached to events tracked by this transmission target and its child transmission targets.
*
* @param propertyValue Property value.
* @param propertyKey Property key.
*
* @discussion A property set in a child transmission target overrides a property with the same key inherited from its parents. Also, the
* properties passed to the `trackEvent:withProperties:` or `trackEvent:withTypedProperties:` override any property with the same key from
* the transmission target itself or its parents.
*/
- (void)setEventPropertyInt64:(int64_t)propertyValue forKey:(NSString *)propertyKey NS_SWIFT_NAME(setEventProperty(_:forKey:));
/**
* Set a boolean event property to be attached to events tracked by this transmission target and its child transmission targets.
*
* @param propertyValue Property value.
* @param propertyKey Property key.
*
* @discussion A property set in a child transmission target overrides a property with the same key inherited from its parents. Also, the
* properties passed to the `trackEvent:withProperties:` or `trackEvent:withTypedProperties:` override any property with the same key from
* the transmission target itself or its parents.
*/
- (void)setEventPropertyBool:(BOOL)propertyValue forKey:(NSString *)propertyKey NS_SWIFT_NAME(setEventProperty(_:forKey:));
/**
* Set a date event property to be attached to events tracked by this transmission target and its child transmission targets.
*
* @param propertyValue Property value.
* @param propertyKey Property key.
*
* @discussion A property set in a child transmission target overrides a property with the same key inherited from its parents. Also, the
* properties passed to the `trackEvent:withProperties:` or `trackEvent:withTypedProperties:` override any property with the same key from
* the transmission target itself or its parents.
*/
- (void)setEventPropertyDate:(NSDate *)propertyValue forKey:(NSString *)propertyKey NS_SWIFT_NAME(setEventProperty(_:forKey:));
/**
* Remove an event property from this transmission target.
*
* @param propertyKey Property key.
*
* @discussion This won't remove properties with the same name declared in other nested transmission targets.
*/
- (void)removeEventPropertyForKey:(NSString *)propertyKey NS_SWIFT_NAME(removeEventProperty(forKey:));
/**
* Once called, the App Center SDK will automatically add UIDevice.identifierForVendor to common schema logs.
*
* @discussion Call this before starting the SDK. This setting is not persisted, so you need to call this when setting up the SDK every
* time. If you want to provide a way for users to opt-in or opt-out of this setting, it is on you to persist their choice and configure the
* App Center SDK accordingly.
*/
- (void)collectDeviceId;
NS_ASSUME_NONNULL_END
@end

View File

@@ -0,0 +1,35 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
#ifndef MS_SERVICE_H
#define MS_SERVICE_H
#import <Foundation/Foundation.h>
/**
* Protocol declaring service logic.
*/
@protocol MSService <NSObject>
/**
* Enable or disable this service.
* The state is persisted in the device's storage across application launches.
*
* @param isEnabled Whether this service is enabled or not.
*
* @see isEnabled
*/
+ (void)setEnabled:(BOOL)isEnabled;
/**
* Indicates whether this service is enabled.
*
* @return `YES` if this service is enabled, `NO` if it is not.
*
* @see setEnabled:
*/
+ (BOOL)isEnabled;
@end
#endif

View File

@@ -0,0 +1,55 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
#ifndef MS_SERVICE_ABSTRACT_H
#define MS_SERVICE_ABSTRACT_H
#import <Foundation/Foundation.h>
#import "MSService.h"
@protocol MSChannelGroupProtocol;
/**
* Abstraction of services common logic.
* This class is intended to be subclassed only not instantiated directly.
*/
@interface MSServiceAbstract : NSObject <MSService>
/**
* The flag indicates whether the service is started from application or not.
*/
@property(nonatomic, assign) BOOL startedFromApplication;
/**
* Start this service with a channel group. Also sets the flag that indicates that a service has been started.
*
* @param channelGroup channel group used to persist and send logs.
* @param appSecret app secret for the SDK.
* @param token default transmission target token for this service.
* @param fromApplication indicates whether the service started from an application or not.
*/
- (void)startWithChannelGroup:(id<MSChannelGroupProtocol>)channelGroup
appSecret:(NSString *)appSecret
transmissionTargetToken:(NSString *)token
fromApplication:(BOOL)fromApplication;
/**
* Update configuration when the service requires to start again. This method should only be called if the service is started from libraries
* and then is being started from an application.
*
* @param appSecret app secret for the SDK.
* @param token default transmission target token for this service.
*/
- (void)updateConfigurationWithAppSecret:(NSString *)appSecret transmissionTargetToken:(NSString *)token;
/**
* Checks if the service needs the application secret.
*
* @return `YES` if the application secret is required, `NO` otherwise.
*/
- (BOOL)isAppSecretRequired;
@end
#endif

View File

@@ -0,0 +1,9 @@
framework module AppCenterAnalytics {
umbrella header "AppCenterAnalytics.h"
export *
module * { export * }
link framework "Foundation"
link framework "UIKit"
}