app center;增加發送ping的秒
This commit is contained in:
1 parent
1bd1ffdb5a
commit
d754ff3b15
719 files changed
+34172
-2875
No files matched your search
@@ -0,0 +1,140 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4d7f499ac3ac1457ab2825691b1e86ff
|
||||
folderAsset: yes
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
'': Any
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
Exclude Android: 1
|
||||
Exclude Editor: 1
|
||||
Exclude Linux: 1
|
||||
Exclude Linux64: 1
|
||||
Exclude LinuxUniversal: 1
|
||||
Exclude OSXIntel: 1
|
||||
Exclude OSXIntel64: 1
|
||||
Exclude OSXUniversal: 1
|
||||
Exclude WebGL: 1
|
||||
Exclude Win: 1
|
||||
Exclude Win64: 1
|
||||
Exclude WindowsStoreApps: 1
|
||||
Exclude iOS: 0
|
||||
Exclude tvOS: 1
|
||||
- first:
|
||||
Android: Android
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: ARMv7
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: AnyCPU
|
||||
DefaultValueInitialized: true
|
||||
OS: AnyOS
|
||||
- first:
|
||||
Facebook: Win
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: AnyCPU
|
||||
- first:
|
||||
Facebook: Win64
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: AnyCPU
|
||||
- first:
|
||||
Standalone: Linux
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: x86
|
||||
- first:
|
||||
Standalone: Linux64
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: x86_64
|
||||
- first:
|
||||
Standalone: LinuxUniversal
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: None
|
||||
- first:
|
||||
Standalone: OSXIntel
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: AnyCPU
|
||||
- first:
|
||||
Standalone: OSXIntel64
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: AnyCPU
|
||||
- first:
|
||||
Standalone: OSXUniversal
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: None
|
||||
- first:
|
||||
Standalone: Win
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: AnyCPU
|
||||
- first:
|
||||
Standalone: Win64
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: AnyCPU
|
||||
- first:
|
||||
Windows Store Apps: WindowsStoreApps
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: AnyCPU
|
||||
DontProcess: false
|
||||
PlaceholderPath:
|
||||
SDK: AnySDK
|
||||
ScriptingBackend: AnyScriptingBackend
|
||||
- first:
|
||||
iPhone: iOS
|
||||
second:
|
||||
enabled: 1
|
||||
settings:
|
||||
AddToEmbeddedBinaries: false
|
||||
CompileFlags:
|
||||
FrameworkDependencies: CoreTelephony;
|
||||
- first:
|
||||
tvOS: tvOS
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CompileFlags:
|
||||
FrameworkDependencies:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 63aaab9aaf628e244ae90893c4033933
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e873f826ffc8503449715ca3c1678105
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,44 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#if __has_include(<AppCenter/MSACAppCenter.h>)
|
||||
#import <AppCenter/MSACAbstractLog.h>
|
||||
#import <AppCenter/MSACAppCenter.h>
|
||||
#import <AppCenter/MSACAppCenterErrors.h>
|
||||
#import <AppCenter/MSACChannelGroupProtocol.h>
|
||||
#import <AppCenter/MSACChannelProtocol.h>
|
||||
#import <AppCenter/MSACConstants+Flags.h>
|
||||
#import <AppCenter/MSACConstants.h>
|
||||
#import <AppCenter/MSACCustomProperties.h>
|
||||
#import <AppCenter/MSACDevice.h>
|
||||
#import <AppCenter/MSACEnable.h>
|
||||
#import <AppCenter/MSACLog.h>
|
||||
#import <AppCenter/MSACLogWithProperties.h>
|
||||
#import <AppCenter/MSACLogger.h>
|
||||
#import <AppCenter/MSACSerializableObject.h>
|
||||
#import <AppCenter/MSACService.h>
|
||||
#import <AppCenter/MSACServiceAbstract.h>
|
||||
#import <AppCenter/MSACWrapperLogger.h>
|
||||
#import <AppCenter/MSACWrapperSdk.h>
|
||||
#else
|
||||
#import "MSACAbstractLog.h"
|
||||
#import "MSACAppCenter.h"
|
||||
#import "MSACAppCenterErrors.h"
|
||||
#import "MSACChannelGroupProtocol.h"
|
||||
#import "MSACChannelProtocol.h"
|
||||
#import "MSACConstants+Flags.h"
|
||||
#import "MSACConstants.h"
|
||||
#import "MSACCustomProperties.h"
|
||||
#import "MSACDevice.h"
|
||||
#import "MSACEnable.h"
|
||||
#import "MSACLog.h"
|
||||
#import "MSACLogWithProperties.h"
|
||||
#import "MSACLogger.h"
|
||||
#import "MSACSerializableObject.h"
|
||||
#import "MSACService.h"
|
||||
#import "MSACServiceAbstract.h"
|
||||
#import "MSACWrapperLogger.h"
|
||||
#import "MSACWrapperSdk.h"
|
||||
#endif
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5afde213a96bedc408ef9ca393f75c40
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,14 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#ifndef MSAC_ABSTRACT_LOG_H
|
||||
#define MSAC_ABSTRACT_LOG_H
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_SWIFT_NAME(AbstractLog)
|
||||
@interface MSACAbstractLog : NSObject
|
||||
|
||||
@end
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d269040c8d236c94493aa6c0fa69c34b
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,203 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#ifndef MSAC_APP_CENTER
|
||||
#define MSAC_APP_CENTER
|
||||
|
||||
#if __has_include(<AppCenter/MSACConstants.h>)
|
||||
#import <AppCenter/MSACConstants.h>
|
||||
#else
|
||||
#import "MSACConstants.h"
|
||||
#endif
|
||||
|
||||
@class MSACWrapperSdk;
|
||||
|
||||
#if !TARGET_OS_TV
|
||||
@class MSACCustomProperties;
|
||||
#endif
|
||||
|
||||
NS_SWIFT_NAME(AppCenter)
|
||||
@interface MSACAppCenter : NSObject
|
||||
|
||||
/**
|
||||
* Returns the singleton instance of MSACAppCenter.
|
||||
*/
|
||||
+ (instancetype)sharedInstance;
|
||||
|
||||
/**
|
||||
* Configure the SDK with an application secret.
|
||||
*
|
||||
* @param appSecret A unique and secret key used to identify the application.
|
||||
*
|
||||
* @discussion This may be called only once per application process lifetime.
|
||||
*/
|
||||
+ (void)configureWithAppSecret:(NSString *)appSecret NS_SWIFT_NAME(configure(withAppSecret:));
|
||||
|
||||
/**
|
||||
* Configure the SDK.
|
||||
*
|
||||
* @discussion This may be called only once per application process lifetime.
|
||||
*/
|
||||
+ (void)configure;
|
||||
|
||||
/**
|
||||
* Configure the SDK with an application secret and an array of services to start.
|
||||
*
|
||||
* @param appSecret A unique and secret key used to identify the application.
|
||||
* @param services Array of services to start.
|
||||
*
|
||||
* @discussion This may be called only once per application process lifetime.
|
||||
*/
|
||||
+ (void)start:(NSString *)appSecret withServices:(NSArray<Class> *)services NS_SWIFT_NAME(start(withAppSecret:services:));
|
||||
|
||||
/**
|
||||
* Start the SDK with an array of services.
|
||||
*
|
||||
* @param services Array of services to start.
|
||||
*
|
||||
* @discussion This may be called only once per application process lifetime.
|
||||
*/
|
||||
+ (void)startWithServices:(NSArray<Class> *)services NS_SWIFT_NAME(start(services:));
|
||||
|
||||
/**
|
||||
* Start a service.
|
||||
*
|
||||
* @param service A service to start.
|
||||
*
|
||||
* @discussion This may be called only once per service per application process lifetime.
|
||||
*/
|
||||
+ (void)startService:(Class)service;
|
||||
|
||||
/**
|
||||
* Configure the SDK with an array of services to start from a library. This will not start the service at application level, it will enable
|
||||
* the service only for the library.
|
||||
*
|
||||
* @param services Array of services to start.
|
||||
*/
|
||||
+ (void)startFromLibraryWithServices:(NSArray<Class> *)services NS_SWIFT_NAME(startFromLibrary(services:));
|
||||
|
||||
/**
|
||||
* The flag indicates whether the SDK has already been configured or not.
|
||||
*/
|
||||
@property(class, atomic, readonly, getter=isConfigured) BOOL configured;
|
||||
|
||||
/**
|
||||
* The flag indicates whether app is running in App Center Test Cloud.
|
||||
*/
|
||||
@property(class, atomic, readonly, getter=isRunningInAppCenterTestCloud) BOOL runningInAppCenterTestCloud;
|
||||
|
||||
/**
|
||||
* The flag indicates whether or not the SDK was enabled as a whole
|
||||
*
|
||||
* The state is persisted in the device's storage across application launches.
|
||||
*/
|
||||
@property(class, nonatomic, getter=isEnabled, setter=setEnabled:) BOOL enabled NS_SWIFT_NAME(enabled);
|
||||
|
||||
/**
|
||||
* Flag indicating whether SDK can send network requests.
|
||||
*
|
||||
* The state is persisted in the device's storage across application launches.
|
||||
*/
|
||||
@property(class, nonatomic, getter=isNetworkRequestsAllowed, setter=setNetworkRequestsAllowed:)
|
||||
BOOL networkRequestsAllowed NS_SWIFT_NAME(networkRequestsAllowed);
|
||||
|
||||
/**
|
||||
* The SDK's log level.
|
||||
*/
|
||||
@property(class, nonatomic) MSACLogLevel logLevel;
|
||||
|
||||
/**
|
||||
* Base URL to use for backend communication.
|
||||
*/
|
||||
@property(class, nonatomic, strong) NSString *logUrl;
|
||||
|
||||
/**
|
||||
* Set log handler.
|
||||
*/
|
||||
@property(class, nonatomic) MSACLogHandler logHandler;
|
||||
|
||||
/**
|
||||
* Set wrapper SDK information to use when building device properties. This is intended in case you are building a SDK that uses the App
|
||||
* Center SDK under the hood, e.g. our Xamarin SDK or ReactNative SDk.
|
||||
*/
|
||||
@property(class, nonatomic, strong) MSACWrapperSdk *wrapperSdk;
|
||||
|
||||
#if !TARGET_OS_TV
|
||||
/**
|
||||
* Set the custom properties.
|
||||
*
|
||||
* @param customProperties Custom properties object.
|
||||
*/
|
||||
+ (void)setCustomProperties:(MSACCustomProperties *)customProperties;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Check whether the application delegate forwarder is enabled or not.
|
||||
*
|
||||
* @discussion The application delegate forwarder forwards messages that target your application delegate methods via swizzling to the SDK.
|
||||
* It simplifies the SDK integration but may not be suitable to any situations. For
|
||||
* instance it should be disabled if you or one of your third party SDK is doing message forwarding on the application delegate. Message
|
||||
* forwarding usually implies the implementation of @see NSObject#forwardingTargetForSelector: or @see NSObject#forwardInvocation: methods.
|
||||
* To disable the application delegate forwarder just add the `AppCenterAppDelegateForwarderEnabled` tag to your Info .plist file and set it
|
||||
* to `0`. Then you will have to forward any application delegate needed by the SDK manually.
|
||||
*/
|
||||
@property(class, readonly, nonatomic, getter=isAppDelegateForwarderEnabled) BOOL appDelegateForwarderEnabled;
|
||||
|
||||
/**
|
||||
* Unique installation identifier.
|
||||
*
|
||||
*/
|
||||
@property(class, readonly, nonatomic) NSUUID *installId;
|
||||
|
||||
/**
|
||||
* Detect if a debugger is attached to the app process. This is only invoked once on app startup and can not detect
|
||||
* if the debugger is being attached during runtime!
|
||||
*
|
||||
*/
|
||||
@property(class, readonly, nonatomic, getter=isDebuggerAttached) BOOL debuggerAttached;
|
||||
|
||||
/**
|
||||
* Current version of AppCenter SDK.
|
||||
*
|
||||
*/
|
||||
@property(class, readonly, nonatomic) NSString *sdkVersion;
|
||||
|
||||
/**
|
||||
* Set the maximum size of the internal storage. This method must be called before App Center is started. This method is only intended for
|
||||
* applications.
|
||||
*
|
||||
* @param sizeInBytes Maximum size of the internal storage in bytes. This will be rounded up to the nearest multiple of a SQLite page size
|
||||
* (default is 4096 bytes). Values below 20,480 bytes (20 KiB) will be ignored.
|
||||
*
|
||||
* @param completionHandler Callback that is invoked when the database size has been set. The `BOOL` parameter is `YES` if changing the size
|
||||
* is successful, and `NO` otherwise. This parameter can be null.
|
||||
*
|
||||
* @discussion This only sets the maximum size of the database, but App Center modules might store additional data.
|
||||
* The value passed to this method is not persisted on disk. The default maximum database size is 10485760 bytes (10 MiB).
|
||||
*/
|
||||
+ (void)setMaxStorageSize:(long)sizeInBytes completionHandler:(void (^)(BOOL))completionHandler;
|
||||
|
||||
/**
|
||||
* Set the user identifier.
|
||||
*
|
||||
* @discussion Set the user identifier for logs sent for the default target token when the secret passed in @c
|
||||
* MSACAppCenter:start:withServices: contains "target={targetToken}".
|
||||
*
|
||||
* For App Center backend the user identifier maximum length is 256 characters.
|
||||
*
|
||||
* AppCenter must be configured or started before this API can be used.
|
||||
*/
|
||||
@property(class, nonatomic, strong) NSString *userId;
|
||||
|
||||
/**
|
||||
* Set country code to use when building device properties.
|
||||
*
|
||||
* @see https://www.iso.org/obp/ui/#search for more information.
|
||||
*/
|
||||
@property(class, nonatomic, strong) NSString *countryCode;
|
||||
|
||||
@end
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d6c0b87fe2f081c4085d18397fe5e706
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,41 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#ifndef MSAC_APP_CENTER_ERRORS_H
|
||||
#define MSAC_APP_CENTER_ERRORS_H
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#define MSAC_APP_CENTER_BASE_DOMAIN @"com.Microsoft.AppCenter."
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
#pragma mark - Domain
|
||||
|
||||
static NSString *const kMSACACErrorDomain = MSAC_APP_CENTER_BASE_DOMAIN @"ErrorDomain";
|
||||
|
||||
#pragma mark - General
|
||||
|
||||
// Error codes.
|
||||
NS_ENUM(NSInteger){MSACACLogInvalidContainerErrorCode = 1, MSACACCanceledErrorCode = 2, MSACACDisabledErrorCode = 3};
|
||||
|
||||
// Error descriptions.
|
||||
static NSString const *kMSACACLogInvalidContainerErrorDesc = @"Invalid log container.";
|
||||
static NSString const *kMSACACCanceledErrorDesc = @"The operation was canceled.";
|
||||
static NSString const *kMSACACDisabledErrorDesc = @"The service is disabled.";
|
||||
|
||||
#pragma mark - Connection
|
||||
|
||||
// Error codes.
|
||||
NS_ENUM(NSInteger){MSACACConnectionPausedErrorCode = 100, MSACACConnectionHttpErrorCode = 101};
|
||||
|
||||
// Error descriptions.
|
||||
static NSString const *kMSACACConnectionHttpErrorDesc = @"An HTTP error occured.";
|
||||
static NSString const *kMSACACConnectionPausedErrorDesc = @"Canceled, connection paused with log deletion.";
|
||||
|
||||
// Error user info keys.
|
||||
static NSString const *kMSACACConnectionHttpCodeErrorKey = @"MSConnectionHttpCode";
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
||||
#endif
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2e2ffb05ce25fa74c844373a605ebe88
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
+87
@@ -0,0 +1,87 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#ifndef MSAC_CHANNEL_GROUP_PROTOCOL_H
|
||||
#define MSAC_CHANNEL_GROUP_PROTOCOL_H
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#if __has_include(<AppCenter/MSACChannelProtocol.h>)
|
||||
#import <AppCenter/MSACChannelProtocol.h>
|
||||
#else
|
||||
#import "MSACChannelProtocol.h"
|
||||
#endif
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@class MSACChannelUnitConfiguration;
|
||||
|
||||
@protocol MSACIngestionProtocol;
|
||||
@protocol MSACChannelUnitProtocol;
|
||||
|
||||
/**
|
||||
* `MSACChannelGroupProtocol` represents a kind of channel that contains constituent MSACChannelUnit objects. When an operation from the
|
||||
* `MSACChannelProtocol` is performed on the group, that operation should be propagated to its constituent MSACChannelUnit objects.
|
||||
*/
|
||||
NS_SWIFT_NAME(ChannelGroupProtocol)
|
||||
@protocol MSACChannelGroupProtocol <MSACChannelProtocol>
|
||||
|
||||
/**
|
||||
* Initialize a channel unit with the given configuration.
|
||||
*
|
||||
* @param configuration channel configuration.
|
||||
*
|
||||
* @return The added `MSACChannelUnitProtocol`. Use this object to enqueue logs.
|
||||
*/
|
||||
- (id<MSACChannelUnitProtocol>)addChannelUnitWithConfiguration:(MSACChannelUnitConfiguration *)configuration
|
||||
NS_SWIFT_NAME(addChannelUnit(withConfiguration:));
|
||||
|
||||
/**
|
||||
* Initialize a channel unit with the given configuration.
|
||||
*
|
||||
* @param configuration channel configuration.
|
||||
* @param ingestion The alternative ingestion object
|
||||
*
|
||||
* @return The added `MSACChannelUnitProtocol`. Use this object to enqueue logs.
|
||||
*/
|
||||
- (id<MSACChannelUnitProtocol>)addChannelUnitWithConfiguration:(MSACChannelUnitConfiguration *)configuration
|
||||
withIngestion:(nullable id<MSACIngestionProtocol>)ingestion
|
||||
NS_SWIFT_NAME(addChannelUnit(_:ingestion:));
|
||||
|
||||
/**
|
||||
* Change the base URL (schema + authority + port only) used to communicate with the backend.
|
||||
*/
|
||||
@property(nonatomic, strong) NSString *_Nullable logUrl;
|
||||
|
||||
/**
|
||||
* Set the app secret.
|
||||
*/
|
||||
@property(nonatomic, strong) NSString *_Nullable appSecret;
|
||||
|
||||
/**
|
||||
* Set the maximum size of the internal storage. This method must be called before App Center is started.
|
||||
*
|
||||
* @discussion The default maximum database size is 10485760 bytes (10 MiB).
|
||||
*
|
||||
* @param sizeInBytes Maximum size of the internal storage in bytes. This will be rounded up to the nearest multiple of a SQLite page size
|
||||
* (default is 4096 bytes). Values below 24576 bytes (24 KiB) will be ignored.
|
||||
* @param completionHandler Callback that is invoked when the database size has been set. The `BOOL` parameter is `YES` if changing the size
|
||||
* is successful, and `NO` otherwise.
|
||||
*/
|
||||
- (void)setMaxStorageSize:(long)sizeInBytes
|
||||
completionHandler:(nullable void (^)(BOOL))completionHandler NS_SWIFT_NAME(setMaxStorageSize(_:completionHandler:));
|
||||
|
||||
/**
|
||||
* Return a channel unit instance for the given groupId.
|
||||
*
|
||||
* @param groupId The group ID for a channel unit.
|
||||
*
|
||||
* @return A channel unit instance or `nil`.
|
||||
*/
|
||||
- (nullable id<MSACChannelUnitProtocol>)channelUnitForGroupId:(NSString *)groupId;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
||||
#endif
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 59b4c9ccf873ec14aac775ea6355576b
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,68 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#ifndef MSAC_CHANNEL_PROTOCOL_H
|
||||
#define MSAC_CHANNEL_PROTOCOL_H
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#if __has_include(<AppCenter/MSACEnable.h>)
|
||||
#import <AppCenter/MSACEnable.h>
|
||||
#else
|
||||
#import "MSACEnable.h"
|
||||
#endif
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@protocol MSACChannelDelegate;
|
||||
|
||||
/**
|
||||
* `MSACChannelProtocol` contains the essential operations of a channel. Channels are broadly responsible for enqueuing logs to be sent to
|
||||
* the backend and/or stored on disk.
|
||||
*/
|
||||
NS_SWIFT_NAME(ChannelProtocol)
|
||||
@protocol MSACChannelProtocol <NSObject, MSACEnable>
|
||||
|
||||
/**
|
||||
* Add delegate.
|
||||
*
|
||||
* @param delegate delegate.
|
||||
*/
|
||||
- (void)addDelegate:(id<MSACChannelDelegate>)delegate;
|
||||
|
||||
/**
|
||||
* Remove delegate.
|
||||
*
|
||||
* @param delegate delegate.
|
||||
*/
|
||||
- (void)removeDelegate:(id<MSACChannelDelegate>)delegate;
|
||||
|
||||
/**
|
||||
* Pause operations, logs will be stored but not sent.
|
||||
*
|
||||
* @param identifyingObject Object used to identify the pause request.
|
||||
*
|
||||
* @discussion A paused channel doesn't forward logs to the ingestion. The identifying object used to pause the channel can be any unique
|
||||
* object. The same identifying object must be used to call resume. For simplicity if the caller is the one owning the channel then @c self
|
||||
* can be used as identifying object.
|
||||
*
|
||||
* @see resumeWithIdentifyingObject:
|
||||
*/
|
||||
- (void)pauseWithIdentifyingObject:(id<NSObject>)identifyingObject;
|
||||
|
||||
/**
|
||||
* Resume operations, logs can be sent again.
|
||||
*
|
||||
* @param identifyingObject Object used to passed to the pause method.
|
||||
*
|
||||
* @discussion The channel only resume when all the outstanding identifying objects have been resumed.
|
||||
*
|
||||
* @see pauseWithIdentifyingObject:
|
||||
*/
|
||||
- (void)resumeWithIdentifyingObject:(id<NSObject>)identifyingObject;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
||||
#endif
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5c86ac1e5f839b34e9fea988dde215ab
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,18 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#ifndef MSAC_CONSTANTS_FLAGS_H
|
||||
#define MSAC_CONSTANTS_FLAGS_H
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
typedef NS_OPTIONS(NSUInteger, MSACFlags) {
|
||||
MSACFlagsNone = (0 << 0), // => 00000000
|
||||
MSACFlagsNormal = (1 << 0), // => 00000001
|
||||
MSACFlagsCritical = (1 << 1), // => 00000010
|
||||
MSACFlagsPersistenceNormal DEPRECATED_MSG_ATTRIBUTE("please use MSACFlagsNormal") = MSACFlagsNormal,
|
||||
MSACFlagsPersistenceCritical DEPRECATED_MSG_ATTRIBUTE("please use MSACFlagsCritical") = MSACFlagsCritical,
|
||||
MSACFlagsDefault = MSACFlagsNormal
|
||||
} NS_SWIFT_NAME(Flags);
|
||||
|
||||
#endif
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 691d011af5ecef846b0bf1232358d6fd
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,170 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
/**
|
||||
* Log Levels
|
||||
*/
|
||||
typedef NS_ENUM(NSUInteger, MSACLogLevel) {
|
||||
|
||||
/**
|
||||
* Logging will be very chatty
|
||||
*/
|
||||
MSACLogLevelVerbose = 2,
|
||||
|
||||
/**
|
||||
* Debug information will be logged
|
||||
*/
|
||||
MSACLogLevelDebug = 3,
|
||||
|
||||
/**
|
||||
* Information will be logged
|
||||
*/
|
||||
MSACLogLevelInfo = 4,
|
||||
|
||||
/**
|
||||
* Errors and warnings will be logged
|
||||
*/
|
||||
MSACLogLevelWarning = 5,
|
||||
|
||||
/**
|
||||
* Errors will be logged
|
||||
*/
|
||||
MSACLogLevelError = 6,
|
||||
|
||||
/**
|
||||
* Only critical errors will be logged
|
||||
*/
|
||||
MSACLogLevelAssert = 7,
|
||||
|
||||
/**
|
||||
* Logging is disabled
|
||||
*/
|
||||
MSACLogLevelNone = 99
|
||||
} NS_SWIFT_NAME(LogLevel);
|
||||
|
||||
typedef NSString * (^MSACLogMessageProvider)(void)NS_SWIFT_NAME(LogMessageProvider);
|
||||
typedef void (^MSACLogHandler)(MSACLogMessageProvider messageProvider, MSACLogLevel logLevel, NSString *tag, const char *file,
|
||||
const char *function, uint line) NS_SWIFT_NAME(LogHandler);
|
||||
|
||||
/**
|
||||
* Channel priorities, check the kMSACPriorityCount if you add a new value.
|
||||
* The order matters here! Values NEED to range from low priority to high priority.
|
||||
*/
|
||||
typedef NS_ENUM(NSInteger, MSACPriority) { MSACPriorityBackground, MSACPriorityDefault, MSACPriorityHigh } NS_SWIFT_NAME(Priority);
|
||||
static short const kMSACPriorityCount = MSACPriorityHigh + 1;
|
||||
|
||||
/**
|
||||
* The priority by which the modules are initialized.
|
||||
* MSACPriorityMax is reserved for only 1 module and this needs to be Crashes.
|
||||
* Crashes needs to be initialized first to catch crashes in our other SDK Modules (which will hopefully never happen) and to avoid losing
|
||||
* any log at crash time.
|
||||
*/
|
||||
typedef NS_ENUM(NSInteger, MSACInitializationPriority) {
|
||||
MSACInitializationPriorityDefault = 500,
|
||||
MSACInitializationPriorityHigh = 750,
|
||||
MSACInitializationPriorityMax = 999
|
||||
} NS_SWIFT_NAME(InitializationPriority);
|
||||
|
||||
/**
|
||||
* Enum with the different HTTP status codes.
|
||||
*/
|
||||
typedef NS_ENUM(NSInteger, MSACHTTPCodesNo) {
|
||||
|
||||
// Invalid
|
||||
MSACHTTPCodesNo0XXInvalidUnknown = 0,
|
||||
|
||||
// Informational
|
||||
MSACHTTPCodesNo1XXInformationalUnknown = 1,
|
||||
MSACHTTPCodesNo100Continue = 100,
|
||||
MSACHTTPCodesNo101SwitchingProtocols = 101,
|
||||
MSACHTTPCodesNo102Processing = 102,
|
||||
|
||||
// Success
|
||||
MSACHTTPCodesNo2XXSuccessUnknown = 2,
|
||||
MSACHTTPCodesNo200OK = 200,
|
||||
MSACHTTPCodesNo201Created = 201,
|
||||
MSACHTTPCodesNo202Accepted = 202,
|
||||
MSACHTTPCodesNo203NonAuthoritativeInformation = 203,
|
||||
MSACHTTPCodesNo204NoContent = 204,
|
||||
MSACHTTPCodesNo205ResetContent = 205,
|
||||
MSACHTTPCodesNo206PartialContent = 206,
|
||||
MSACHTTPCodesNo207MultiStatus = 207,
|
||||
MSACHTTPCodesNo208AlreadyReported = 208,
|
||||
MSACHTTPCodesNo209IMUsed = 209,
|
||||
|
||||
// Redirection
|
||||
MSACHTTPCodesNo3XXSuccessUnknown = 3,
|
||||
MSACHTTPCodesNo300MultipleChoices = 300,
|
||||
MSACHTTPCodesNo301MovedPermanently = 301,
|
||||
MSACHTTPCodesNo302Found = 302,
|
||||
MSACHTTPCodesNo303SeeOther = 303,
|
||||
MSACHTTPCodesNo304NotModified = 304,
|
||||
MSACHTTPCodesNo305UseProxy = 305,
|
||||
MSACHTTPCodesNo306SwitchProxy = 306,
|
||||
MSACHTTPCodesNo307TemporaryRedirect = 307,
|
||||
MSACHTTPCodesNo308PermanentRedirect = 308,
|
||||
|
||||
// Client error
|
||||
MSACHTTPCodesNo4XXSuccessUnknown = 4,
|
||||
MSACHTTPCodesNo400BadRequest = 400,
|
||||
MSACHTTPCodesNo401Unauthorised = 401,
|
||||
MSACHTTPCodesNo402PaymentRequired = 402,
|
||||
MSACHTTPCodesNo403Forbidden = 403,
|
||||
MSACHTTPCodesNo404NotFound = 404,
|
||||
MSACHTTPCodesNo405MethodNotAllowed = 405,
|
||||
MSACHTTPCodesNo406NotAcceptable = 406,
|
||||
MSACHTTPCodesNo407ProxyAuthenticationRequired = 407,
|
||||
MSACHTTPCodesNo408RequestTimeout = 408,
|
||||
MSACHTTPCodesNo409Conflict = 409,
|
||||
MSACHTTPCodesNo410Gone = 410,
|
||||
MSACHTTPCodesNo411LengthRequired = 411,
|
||||
MSACHTTPCodesNo412PreconditionFailed = 412,
|
||||
MSACHTTPCodesNo413RequestEntityTooLarge = 413,
|
||||
MSACHTTPCodesNo414RequestURITooLong = 414,
|
||||
MSACHTTPCodesNo415UnsupportedMediaType = 415,
|
||||
MSACHTTPCodesNo416RequestedRangeNotSatisfiable = 416,
|
||||
MSACHTTPCodesNo417ExpectationFailed = 417,
|
||||
MSACHTTPCodesNo418IamATeapot = 418,
|
||||
MSACHTTPCodesNo419AuthenticationTimeout = 419,
|
||||
MSACHTTPCodesNo420MethodFailureSpringFramework = 420,
|
||||
MSACHTTPCodesNo420EnhanceYourCalmTwitter = 4200,
|
||||
MSACHTTPCodesNo422UnprocessableEntity = 422,
|
||||
MSACHTTPCodesNo423Locked = 423,
|
||||
MSACHTTPCodesNo424FailedDependency = 424,
|
||||
MSACHTTPCodesNo424MethodFailureWebDaw = 4240,
|
||||
MSACHTTPCodesNo425UnorderedCollection = 425,
|
||||
MSACHTTPCodesNo426UpgradeRequired = 426,
|
||||
MSACHTTPCodesNo428PreconditionRequired = 428,
|
||||
MSACHTTPCodesNo429TooManyRequests = 429,
|
||||
MSACHTTPCodesNo431RequestHeaderFieldsTooLarge = 431,
|
||||
MSACHTTPCodesNo444NoResponseNginx = 444,
|
||||
MSACHTTPCodesNo449RetryWithMicrosoft = 449,
|
||||
MSACHTTPCodesNo450BlockedByWindowsParentalControls = 450,
|
||||
MSACHTTPCodesNo451RedirectMicrosoft = 451,
|
||||
MSACHTTPCodesNo451UnavailableForLegalReasons = 4510,
|
||||
MSACHTTPCodesNo494RequestHeaderTooLargeNginx = 494,
|
||||
MSACHTTPCodesNo495CertErrorNginx = 495,
|
||||
MSACHTTPCodesNo496NoCertNginx = 496,
|
||||
MSACHTTPCodesNo497HTTPToHTTPSNginx = 497,
|
||||
MSACHTTPCodesNo499ClientClosedRequestNginx = 499,
|
||||
|
||||
// Server error
|
||||
MSACHTTPCodesNo5XXSuccessUnknown = 5,
|
||||
MSACHTTPCodesNo500InternalServerError = 500,
|
||||
MSACHTTPCodesNo501NotImplemented = 501,
|
||||
MSACHTTPCodesNo502BadGateway = 502,
|
||||
MSACHTTPCodesNo503ServiceUnavailable = 503,
|
||||
MSACHTTPCodesNo504GatewayTimeout = 504,
|
||||
MSACHTTPCodesNo505HTTPVersionNotSupported = 505,
|
||||
MSACHTTPCodesNo506VariantAlsoNegotiates = 506,
|
||||
MSACHTTPCodesNo507InsufficientStorage = 507,
|
||||
MSACHTTPCodesNo508LoopDetected = 508,
|
||||
MSACHTTPCodesNo509BandwidthLimitExceeded = 509,
|
||||
MSACHTTPCodesNo510NotExtended = 510,
|
||||
MSACHTTPCodesNo511NetworkAuthenticationRequired = 511,
|
||||
MSACHTTPCodesNo522ConnectionTimedOut = 522,
|
||||
MSACHTTPCodesNo598NetworkReadTimeoutErrorUnknown = 598,
|
||||
MSACHTTPCodesNo599NetworkConnectTimeoutErrorUnknown = 599
|
||||
} NS_SWIFT_NAME(HTTPCodesNo);
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 27edcc9a07a43ae4b968db5628d0d85e
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,71 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#ifndef MSAC_CUSTOM_PROPERTIES_H
|
||||
#define MSAC_CUSTOM_PROPERTIES_H
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
/**
|
||||
* Custom properties builder.
|
||||
* Collects multiple properties to send in one log.
|
||||
*/
|
||||
NS_SWIFT_NAME(CustomProperties)
|
||||
@interface MSACCustomProperties : NSObject
|
||||
|
||||
/**
|
||||
* Set the specified property value with the specified key.
|
||||
* If the properties previously contained a property for the key, the old value is replaced.
|
||||
*
|
||||
* @param key Key with which the specified value is to be set.
|
||||
* @param value Value to be set with the specified key.
|
||||
*
|
||||
* @return This instance.
|
||||
*/
|
||||
- (instancetype)setString:(NSString *)value forKey:(NSString *)key NS_SWIFT_NAME(set(_:forKey:));
|
||||
|
||||
/**
|
||||
* Set the specified property value with the specified key.
|
||||
* If the properties previously contained a property for the key, the old value is replaced.
|
||||
*
|
||||
* @param key Key with which the specified value is to be set.
|
||||
* @param value Value to be set with the specified key.
|
||||
*
|
||||
* @return This instance.
|
||||
*/
|
||||
- (instancetype)setNumber:(NSNumber *)value forKey:(NSString *)key NS_SWIFT_NAME(set(_:forKey:));
|
||||
|
||||
/**
|
||||
* Set the specified property value with the specified key.
|
||||
* If the properties previously contained a property for the key, the old value is replaced.
|
||||
*
|
||||
* @param key Key with which the specified value is to be set.
|
||||
* @param value Value to be set with the specified key.
|
||||
*
|
||||
* @return This instance.
|
||||
*/
|
||||
- (instancetype)setBool:(BOOL)value forKey:(NSString *)key NS_SWIFT_NAME(set(_:forKey:));
|
||||
|
||||
/**
|
||||
* Set the specified property value with the specified key.
|
||||
* If the properties previously contained a property for the key, the old value is replaced.
|
||||
*
|
||||
* @param key Key with which the specified value is to be set.
|
||||
* @param value Value to be set with the specified key.
|
||||
*
|
||||
* @return This instance.
|
||||
*/
|
||||
- (instancetype)setDate:(NSDate *)value forKey:(NSString *)key NS_SWIFT_NAME(set(_:forKey:));
|
||||
|
||||
/**
|
||||
* Clear the property for the specified key.
|
||||
*
|
||||
* @param key Key whose mapping is to be cleared.
|
||||
*
|
||||
* @return This instance.
|
||||
*/
|
||||
- (instancetype)clearPropertyForKey:(NSString *)key NS_SWIFT_NAME(clearProperty(forKey:));
|
||||
|
||||
@end
|
||||
|
||||
#endif
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 007c15081409d7c4fb501d43d9c2b5ec
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,101 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#ifndef MSAC_DEVICE_H
|
||||
#define MSAC_DEVICE_H
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#if __has_include(<AppCenter/MSACWrapperSdk.h>)
|
||||
#import <AppCenter/MSACWrapperSdk.h>
|
||||
#else
|
||||
#import "MSACWrapperSdk.h"
|
||||
#endif
|
||||
|
||||
NS_SWIFT_NAME(Device)
|
||||
@interface MSACDevice : MSACWrapperSdk
|
||||
|
||||
/*
|
||||
* Name of the SDK. Consists of the name of the SDK and the platform, e.g. "appcenter.ios", "appcenter.android"
|
||||
*/
|
||||
@property(nonatomic, copy, readonly) NSString *sdkName;
|
||||
|
||||
/*
|
||||
* Version of the SDK in semver format, e.g. "1.2.0" or "0.12.3-alpha.1".
|
||||
*/
|
||||
@property(nonatomic, copy, readonly) NSString *sdkVersion;
|
||||
|
||||
/*
|
||||
* Device model (example: iPad2,3).
|
||||
*/
|
||||
@property(nonatomic, copy, readonly) NSString *model;
|
||||
|
||||
/*
|
||||
* Device manufacturer (example: HTC).
|
||||
*/
|
||||
@property(nonatomic, copy, readonly) NSString *oemName;
|
||||
|
||||
/*
|
||||
* OS name (example: iOS).
|
||||
*/
|
||||
@property(nonatomic, copy, readonly) NSString *osName;
|
||||
|
||||
/*
|
||||
* OS version (example: 9.3.0).
|
||||
*/
|
||||
@property(nonatomic, copy, readonly) NSString *osVersion;
|
||||
|
||||
/*
|
||||
* OS build code (example: LMY47X). [optional]
|
||||
*/
|
||||
@property(nonatomic, copy, readonly) NSString *osBuild;
|
||||
|
||||
/*
|
||||
* API level when applicable like in Android (example: 15). [optional]
|
||||
*/
|
||||
@property(nonatomic, copy, readonly) NSNumber *osApiLevel;
|
||||
|
||||
/*
|
||||
* Language code (example: en_US).
|
||||
*/
|
||||
@property(nonatomic, copy, readonly) NSString *locale;
|
||||
|
||||
/*
|
||||
* The offset in minutes from UTC for the device time zone, including daylight savings time.
|
||||
*/
|
||||
@property(nonatomic, readonly, strong) NSNumber *timeZoneOffset;
|
||||
|
||||
/*
|
||||
* Screen size of the device in pixels (example: 640x480).
|
||||
*/
|
||||
@property(nonatomic, copy, readonly) NSString *screenSize;
|
||||
|
||||
/*
|
||||
* Application version name, e.g. 1.1.0
|
||||
*/
|
||||
@property(nonatomic, copy, readonly) NSString *appVersion;
|
||||
|
||||
/*
|
||||
* Carrier name (for mobile devices). [optional]
|
||||
*/
|
||||
@property(nonatomic, copy, readonly) NSString *carrierName;
|
||||
|
||||
/*
|
||||
* Carrier country code (for mobile devices). [optional]
|
||||
*/
|
||||
@property(nonatomic, copy, readonly) NSString *carrierCountry;
|
||||
|
||||
/*
|
||||
* The app's build number, e.g. 42.
|
||||
*/
|
||||
@property(nonatomic, copy, readonly) NSString *appBuild;
|
||||
|
||||
/*
|
||||
* The bundle identifier, package identifier, or namespace, depending on what the individual plattforms use, .e.g com.microsoft.example.
|
||||
* [optional]
|
||||
*/
|
||||
@property(nonatomic, copy, readonly) NSString *appNamespace;
|
||||
|
||||
@end
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c6090d5dc8899f94f9c57d8de12daf8d
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,27 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#ifndef MSAC_ENABLE_H
|
||||
#define MSAC_ENABLE_H
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
/**
|
||||
* Protocol to define an instance that can be enabled/disabled.
|
||||
*/
|
||||
NS_SWIFT_NAME(Enable)
|
||||
@protocol MSACEnable <NSObject>
|
||||
|
||||
@required
|
||||
|
||||
/**
|
||||
* Enable/disable this instance and delete data on disabled state.
|
||||
*
|
||||
* @param isEnabled A boolean value set to YES to enable the instance or NO to disable it.
|
||||
* @param deleteData A boolean value set to YES to delete data or NO to keep it.
|
||||
*/
|
||||
- (void)setEnabled:(BOOL)isEnabled andDeleteDataOnDisabled:(BOOL)deleteData NS_SWIFT_NAME(setEnabled(_:deleteDataOnDisabled:));
|
||||
|
||||
@end
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2b55eaf557924204490676d9e484d033
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,74 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#ifndef MSAC_LOG_H
|
||||
#define MSAC_LOG_H
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@class MSACDevice;
|
||||
|
||||
NS_SWIFT_NAME(Log)
|
||||
@protocol MSACLog <NSObject>
|
||||
|
||||
/**
|
||||
* Log type.
|
||||
*/
|
||||
@property(nonatomic, copy) NSString *type;
|
||||
|
||||
/**
|
||||
* Log timestamp.
|
||||
*/
|
||||
@property(nonatomic, strong) NSDate *timestamp;
|
||||
|
||||
/**
|
||||
* A session identifier is used to correlate logs together. A session is an abstract concept in the API and is not necessarily an analytics
|
||||
* session, it can be used to only track crashes.
|
||||
*/
|
||||
@property(nonatomic, copy) NSString *sid;
|
||||
|
||||
/**
|
||||
* Optional distribution group ID value.
|
||||
*/
|
||||
@property(nonatomic, copy) NSString *distributionGroupId;
|
||||
|
||||
/**
|
||||
* Optional user identifier.
|
||||
*/
|
||||
@property(nonatomic, copy) NSString *userId;
|
||||
|
||||
/**
|
||||
* Device properties associated to this log.
|
||||
*/
|
||||
@property(nonatomic, strong) MSACDevice *device;
|
||||
|
||||
/**
|
||||
* Transient object tag. For example, a log can be tagged with a transmission target. We do this currently to prevent properties being
|
||||
* applied retroactively to previous logs by comparing their tags.
|
||||
*/
|
||||
@property(nonatomic, strong) NSObject *tag;
|
||||
|
||||
/**
|
||||
* Checks if the object's values are valid.
|
||||
*
|
||||
* @return YES, if the object is valid.
|
||||
*/
|
||||
- (BOOL)isValid;
|
||||
|
||||
/**
|
||||
* Adds a transmission target token that this log should be sent to.
|
||||
*
|
||||
* @param token The transmission target token.
|
||||
*/
|
||||
- (void)addTransmissionTargetToken:(NSString *)token;
|
||||
|
||||
/**
|
||||
* Gets all transmission target tokens that this log should be sent to.
|
||||
*
|
||||
* @returns Collection of transmission target tokens that this log should be sent to.
|
||||
*/
|
||||
- (NSSet *)transmissionTargetTokens;
|
||||
|
||||
@end
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 71933501f40dc174dbb1452394fe4238
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,25 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#ifndef MSAC_LOG_WITH_PROPERTIES_H
|
||||
#define MSAC_LOG_WITH_PROPERTIES_H
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#if __has_include(<AppCenter/MSACAbstractLog.h>)
|
||||
#import <AppCenter/MSACAbstractLog.h>
|
||||
#else
|
||||
#import "MSACAbstractLog.h"
|
||||
#endif
|
||||
|
||||
NS_SWIFT_NAME(LogWithProperties)
|
||||
@interface MSACLogWithProperties : MSACAbstractLog
|
||||
|
||||
/**
|
||||
* Additional key/value pair parameters. [optional]
|
||||
*/
|
||||
@property(nonatomic, strong) NSDictionary<NSString *, NSString *> *properties;
|
||||
|
||||
@end
|
||||
|
||||
#endif
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 75a4cb55a13d80944b5d9ccf48da66da
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,54 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#ifndef MSAC_LOGGER
|
||||
#define MSAC_LOGGER
|
||||
|
||||
#if __has_include(<AppCenter/MSACConstants.h>)
|
||||
#import <AppCenter/MSACConstants.h>
|
||||
#else
|
||||
#import "MSACConstants.h"
|
||||
#endif
|
||||
|
||||
#define MSACLog(_level, _tag, _message) \
|
||||
[MSACLogger logMessage:_message level:_level tag:_tag file:__FILE__ function:__PRETTY_FUNCTION__ line:__LINE__]
|
||||
#define MSACLogAssert(tag, format, ...) \
|
||||
MSACLog(MSACLogLevelAssert, tag, (^{ \
|
||||
return [NSString stringWithFormat:(format), ##__VA_ARGS__]; \
|
||||
}))
|
||||
#define MSACLogError(tag, format, ...) \
|
||||
MSACLog(MSACLogLevelError, tag, (^{ \
|
||||
return [NSString stringWithFormat:(format), ##__VA_ARGS__]; \
|
||||
}))
|
||||
#define MSACLogWarning(tag, format, ...) \
|
||||
MSACLog(MSACLogLevelWarning, tag, (^{ \
|
||||
return [NSString stringWithFormat:(format), ##__VA_ARGS__]; \
|
||||
}))
|
||||
#define MSACLogInfo(tag, format, ...) \
|
||||
MSACLog(MSACLogLevelInfo, tag, (^{ \
|
||||
return [NSString stringWithFormat:(format), ##__VA_ARGS__]; \
|
||||
}))
|
||||
#define MSACLogDebug(tag, format, ...) \
|
||||
MSACLog(MSACLogLevelDebug, tag, (^{ \
|
||||
return [NSString stringWithFormat:(format), ##__VA_ARGS__]; \
|
||||
}))
|
||||
#define MSACLogVerbose(tag, format, ...) \
|
||||
MSACLog(MSACLogLevelVerbose, tag, (^{ \
|
||||
return [NSString stringWithFormat:(format), ##__VA_ARGS__]; \
|
||||
}))
|
||||
|
||||
NS_SWIFT_NAME(Logger)
|
||||
@interface MSACLogger : NSObject
|
||||
|
||||
+ (void)logMessage:(MSACLogMessageProvider)messageProvider
|
||||
level:(MSACLogLevel)loglevel
|
||||
tag:(NSString *)tag
|
||||
file:(const char *)file
|
||||
function:(const char *)function
|
||||
line:(uint)line;
|
||||
|
||||
@end
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: dee347580c3ddf3438c1171ab7ec0aa0
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#ifndef SERIALIZABLE_OBJECT_H
|
||||
#define SERIALIZABLE_OBJECT_H
|
||||
|
||||
@protocol MSACSerializableObject <NSCoding>
|
||||
|
||||
/**
|
||||
* Serialize this object to a dictionary.
|
||||
*
|
||||
* @return A dictionary representing this object.
|
||||
*/
|
||||
- (NSMutableDictionary *)serializeToDictionary;
|
||||
|
||||
@end
|
||||
#endif
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4371122c1e116b444bdf89da9b5afdc9
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,23 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#ifndef MSAC_SERVICE_H
|
||||
#define MSAC_SERVICE_H
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
/**
|
||||
* Protocol declaring service logic.
|
||||
*/
|
||||
NS_SWIFT_NAME(Service)
|
||||
@protocol MSACService <NSObject>
|
||||
|
||||
/**
|
||||
* Indicates whether this service is enabled.
|
||||
* The state is persisted in the device's storage across application launches.
|
||||
*/
|
||||
@property(class, nonatomic, getter=isEnabled, setter=setEnabled:) BOOL enabled NS_SWIFT_NAME(enabled);
|
||||
|
||||
@end
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9c65525e380edab4490d6a46aee7c981
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,58 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#ifndef MSAC_SERVICE_ABSTRACT_H
|
||||
#define MSAC_SERVICE_ABSTRACT_H
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#if __has_include(<AppCenter/MSACService.h>)
|
||||
#import <AppCenter/MSACService.h>
|
||||
#else
|
||||
#import "MSACService.h"
|
||||
#endif
|
||||
|
||||
@protocol MSACChannelGroupProtocol;
|
||||
|
||||
/**
|
||||
* Abstraction of services common logic.
|
||||
* This class is intended to be subclassed only not instantiated directly.
|
||||
*/
|
||||
NS_SWIFT_NAME(ServiceAbstract)
|
||||
@interface MSACServiceAbstract : NSObject <MSACService>
|
||||
|
||||
/**
|
||||
* 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<MSACChannelGroupProtocol>)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;
|
||||
|
||||
/**
|
||||
* The flag indicate whether the service needs the application secret or not.
|
||||
*/
|
||||
@property(atomic, readonly) BOOL isAppSecretRequired;
|
||||
|
||||
@end
|
||||
|
||||
#endif
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f5909332c1126f14fad70da5caf8d496
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,21 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#if __has_include(<AppCenter/MSACConstants.h>)
|
||||
#import <AppCenter/MSACConstants.h>
|
||||
#else
|
||||
#import "MSACConstants.h"
|
||||
#endif
|
||||
|
||||
/**
|
||||
* This is a utility for producing App Center style log messages. It is only intended for use by App Center services and wrapper SDKs of App
|
||||
* Center.
|
||||
*/
|
||||
NS_SWIFT_NAME(WrapperLogger)
|
||||
@interface MSACWrapperLogger : NSObject
|
||||
|
||||
+ (void)MSACWrapperLog:(MSACLogMessageProvider)message tag:(NSString *)tag level:(MSACLogLevel)level;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b03b11801281aa24e922bbbb46ff78fa
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,60 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#ifndef MSAC_WRAPPER_SDK_H
|
||||
#define MSAC_WRAPPER_SDK_H
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_SWIFT_NAME(WrapperSdk)
|
||||
@interface MSACWrapperSdk : NSObject
|
||||
|
||||
/*
|
||||
* Version of the wrapper SDK. When the SDK is embedding another base SDK (for example Xamarin.Android wraps Android), the Xamarin specific
|
||||
* version is populated into this field while sdkVersion refers to the original Android SDK. [optional]
|
||||
*/
|
||||
@property(nonatomic, copy, readonly) NSString *wrapperSdkVersion;
|
||||
|
||||
/*
|
||||
* Name of the wrapper SDK (examples: Xamarin, Cordova). [optional]
|
||||
*/
|
||||
@property(nonatomic, copy, readonly) NSString *wrapperSdkName;
|
||||
|
||||
/*
|
||||
* Version of the wrapper technology framework (Xamarin runtime version or ReactNative or Cordova etc...). [optional]
|
||||
*/
|
||||
@property(nonatomic, copy, readonly) NSString *wrapperRuntimeVersion;
|
||||
|
||||
/*
|
||||
* Label that is used to identify application code 'version' released via Live Update beacon running on device.
|
||||
*/
|
||||
@property(nonatomic, copy, readonly) NSString *liveUpdateReleaseLabel;
|
||||
|
||||
/*
|
||||
* Identifier of environment that current application release belongs to, deployment key then maps to environment like Production, Staging.
|
||||
*/
|
||||
@property(nonatomic, copy, readonly) NSString *liveUpdateDeploymentKey;
|
||||
|
||||
/*
|
||||
* Hash of all files (ReactNative or Cordova) deployed to device via LiveUpdate beacon. Helps identify the Release version on device or need
|
||||
* to download updates in future
|
||||
*/
|
||||
@property(nonatomic, copy, readonly) NSString *liveUpdatePackageHash;
|
||||
|
||||
- (instancetype)initWithWrapperSdkVersion:(NSString *)wrapperSdkVersion
|
||||
wrapperSdkName:(NSString *)wrapperSdkName
|
||||
wrapperRuntimeVersion:(NSString *)wrapperRuntimeVersion
|
||||
liveUpdateReleaseLabel:(NSString *)liveUpdateReleaseLabel
|
||||
liveUpdateDeploymentKey:(NSString *)liveUpdateDeploymentKey
|
||||
liveUpdatePackageHash:(NSString *)liveUpdatePackageHash;
|
||||
|
||||
/**
|
||||
* Checks if the object's values are valid.
|
||||
*
|
||||
* @return YES, if the object is valid.
|
||||
*/
|
||||
- (BOOL)isValid;
|
||||
|
||||
@end
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1d5d8ceddea113a43bacc8e2f7886c39
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bfefdac84f20eff42a420ca79913b106
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 41af84fa5b977164488a92e63716da66
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,13 @@
|
||||
framework module AppCenter {
|
||||
umbrella header "AppCenter.h"
|
||||
|
||||
export *
|
||||
module * { export * }
|
||||
|
||||
link framework "Foundation"
|
||||
link framework "CoreTelephony"
|
||||
link framework "SystemConfiguration"
|
||||
link framework "UIKit"
|
||||
link "sqlite3"
|
||||
link "z"
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5da2ec48007613d4990bbb90acdc0914
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 748066203d70bfc4aafc78f80d8a18a0
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
+114
@@ -0,0 +1,114 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#import "MSACConstants+Flags.h"
|
||||
|
||||
@protocol MSACChannelUnitProtocol;
|
||||
@protocol MSACChannelGroupProtocol;
|
||||
@protocol MSACChannelProtocol;
|
||||
@protocol MSACLog;
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@protocol MSACChannelDelegate <NSObject>
|
||||
|
||||
@optional
|
||||
|
||||
/**
|
||||
* A callback that is called when a channel unit is added to the channel group.
|
||||
*
|
||||
* @param channelGroup The channel group.
|
||||
* @param channel The newly added channel.
|
||||
*/
|
||||
- (void)channelGroup:(id<MSACChannelGroupProtocol>)channelGroup didAddChannelUnit:(id<MSACChannelUnitProtocol>)channel;
|
||||
|
||||
/**
|
||||
* A callback that is called when a log is just enqueued. Delegates may want to prepare the log a little more before further processing.
|
||||
*
|
||||
* @param log The log to prepare.
|
||||
*/
|
||||
- (void)channel:(id<MSACChannelProtocol>)channel prepareLog:(id<MSACLog>)log;
|
||||
|
||||
/**
|
||||
* A callback that is called after a log is definitely prepared.
|
||||
*
|
||||
* @param log The log.
|
||||
* @param internalId An internal Id to keep track of logs.
|
||||
* @param flags Options for the log.
|
||||
*/
|
||||
- (void)channel:(id<MSACChannelProtocol>)channel didPrepareLog:(id<MSACLog>)log internalId:(NSString *)internalId flags:(MSACFlags)flags;
|
||||
|
||||
/**
|
||||
* A callback that is called after a log completed the enqueueing process whether it was successful or not.
|
||||
*
|
||||
* @param log The log.
|
||||
* @param internalId An internal Id to keep track of logs.
|
||||
*/
|
||||
- (void)channel:(id<MSACChannelProtocol>)channel didCompleteEnqueueingLog:(id<MSACLog>)log internalId:(NSString *)internalId;
|
||||
|
||||
/**
|
||||
* Callback method that will be called before each log will be send to the server.
|
||||
*
|
||||
* @param channel The channel object.
|
||||
* @param log The log to be sent.
|
||||
*/
|
||||
- (void)channel:(id<MSACChannelProtocol>)channel willSendLog:(id<MSACLog>)log;
|
||||
|
||||
/**
|
||||
* Callback method that will be called in case the SDK was able to send a log.
|
||||
*
|
||||
* @param channel The channel object.
|
||||
* @param log The log to be sent.
|
||||
*/
|
||||
- (void)channel:(id<MSACChannelProtocol>)channel didSucceedSendingLog:(id<MSACLog>)log;
|
||||
|
||||
/**
|
||||
* Callback method that will be called in case the SDK was unable to send a log.
|
||||
*
|
||||
* @param channel The channel object.
|
||||
* @param log The log to be sent.
|
||||
* @param error The error that occured.
|
||||
*/
|
||||
- (void)channel:(id<MSACChannelProtocol>)channel didFailSendingLog:(id<MSACLog>)log withError:(nullable NSError *)error;
|
||||
|
||||
/**
|
||||
* A callback that is called when setEnabled has been invoked.
|
||||
*
|
||||
* @param channel The channel.
|
||||
* @param isEnabled The boolean that indicates enabled.
|
||||
* @param deletedData The boolean that indicates deleting data on disabled.
|
||||
*/
|
||||
- (void)channel:(id<MSACChannelProtocol>)channel didSetEnabled:(BOOL)isEnabled andDeleteDataOnDisabled:(BOOL)deletedData;
|
||||
|
||||
/**
|
||||
* A callback that is called when pause has been invoked.
|
||||
*
|
||||
* @param channel The channel.
|
||||
* @param identifyingObject The identifying object used to pause the channel.
|
||||
*/
|
||||
- (void)channel:(id<MSACChannelProtocol>)channel didPauseWithIdentifyingObject:(id<NSObject>)identifyingObject;
|
||||
|
||||
/**
|
||||
* A callback that is called when resume has been invoked.
|
||||
*
|
||||
* @param channel The channel.
|
||||
* @param identifyingObject The identifying object used to resume the channel.
|
||||
*/
|
||||
- (void)channel:(id<MSACChannelProtocol>)channel didResumeWithIdentifyingObject:(id<NSObject>)identifyingObject;
|
||||
|
||||
/**
|
||||
* Callback method that will determine if a log should be filtered out from the usual processing pipeline. If any delegate returns true, the
|
||||
* log is filtered.
|
||||
*
|
||||
* @param channelUnit The channel unit that is going to send the log.
|
||||
* @param log The log to be filtered or not.
|
||||
*
|
||||
* @return `true` if the log should be filtered out.
|
||||
*/
|
||||
- (BOOL)channelUnit:(id<MSACChannelUnitProtocol>)channelUnit shouldFilterLog:(id<MSACLog>)log;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 152ef2246954088468276b005fe3b321
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface AppCenterStarter : NSObject
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,31 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 66682104049734a38a8f3114df75215f
|
||||
timeCreated: 1502221064
|
||||
licenseType: Pro
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
- first:
|
||||
iPhone: iOS
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,136 @@
|
||||
#define APPCENTER_UNITY_USE_CRASHES
|
||||
#define APPCENTER_UNITY_USE_ANALYTICS
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
#import "AppCenterStarter.h"
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@import AppCenter;
|
||||
|
||||
#ifdef APPCENTER_UNITY_USE_CRASHES
|
||||
@import AppCenterCrashes;
|
||||
#endif
|
||||
|
||||
#ifdef APPCENTER_UNITY_USE_ANALYTICS
|
||||
@import AppCenterAnalytics;
|
||||
#endif
|
||||
|
||||
#ifdef APPCENTER_UNITY_USE_DISTRIBUTE
|
||||
@import AppCenterDistribute;
|
||||
#import "../Distribute/DistributeDelegate.h"
|
||||
#endif
|
||||
|
||||
enum StartupMode {
|
||||
APPCENTER,
|
||||
ONECOLLECTOR,
|
||||
BOTH,
|
||||
NONE,
|
||||
SKIP
|
||||
};
|
||||
|
||||
@implementation AppCenterStarter
|
||||
|
||||
static NSString *const kMSAppSecret = @"d8e69880-4b16-468e-9216-d0eec8fff482";
|
||||
static NSString *const kMSTargetToken = @"appcenter-transmission-target-token";
|
||||
static NSString *const kMSCustomLogUrl = @"custom-log-url";
|
||||
static NSString *const kMSCustomAllowNetworkRequests = @"YES";
|
||||
static NSString *const kMSCustomApiUrl = @"custom-api-url";
|
||||
static NSString *const kMSCustomInstallUrl = @"custom-install-url";
|
||||
static NSString *const kMSStartTargetKey = @"MSAppCenterStartTargetUnityKey";
|
||||
static NSString *const kMSStorageSizeKey = @"MSAppCenterMaxStorageSizeUnityKey";
|
||||
static NSString *const kMSLogUrlKey = @"MSAppCenterLogUrlUnityKey";
|
||||
static NSString *const kMSAppSecretKey = @"MSAppCenterAppSecretUnityKey";
|
||||
static NSString *const kMSUpdateTrackKey = @"MSAppCenterUpdateTrackUnityKey";
|
||||
|
||||
static const int kMSLogLevel = 0 /*LOG_LEVEL*/;
|
||||
static const int kMSStartupType = 0 /*STARTUP_TYPE*/;
|
||||
static const int kMSUpdateTrack = 1;
|
||||
|
||||
+ (void)load {
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||
selector:@selector(startAppCenter)
|
||||
name:UIApplicationDidFinishLaunchingNotification
|
||||
object:nil];
|
||||
}
|
||||
|
||||
+ (void)startAppCenter {
|
||||
NSNumber *startTarget = [[NSUserDefaults standardUserDefaults] objectForKey:kMSStartTargetKey];
|
||||
int startTargetValue = startTarget == nil ? kMSStartupType : startTarget.intValue;
|
||||
[MSACAppCenter setLogLevel:(MSACLogLevel)kMSLogLevel];
|
||||
if (startTargetValue == SKIP) {
|
||||
return;
|
||||
}
|
||||
|
||||
NSMutableArray<Class> *classes = [[NSMutableArray alloc] init];
|
||||
|
||||
NSNumber *maxStorageSize = [[NSUserDefaults standardUserDefaults] objectForKey:kMSStorageSizeKey];
|
||||
if (maxStorageSize != nil) {
|
||||
[MSACAppCenter setMaxStorageSize:maxStorageSize
|
||||
completionHandler:^void(BOOL result) {
|
||||
if (!result) {
|
||||
MSACLogWarning(@"MSACAppCenter", @"setMaxStorageSize failed");
|
||||
}
|
||||
}];
|
||||
} else {
|
||||
#ifdef APPCENTER_USE_CUSTOM_MAX_STORAGE_SIZE
|
||||
[MSACAppCenter setMaxStorageSize:APPCENTER_MAX_STORAGE_SIZE
|
||||
completionHandler:^void(BOOL result) {
|
||||
if (!result) {
|
||||
MSACLogWarning(@"MSACAppCenter", @"setMaxStorageSize failed");
|
||||
}
|
||||
}];
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef APPCENTER_UNITY_USE_ANALYTICS
|
||||
[classes addObject:MSACAnalytics.class];
|
||||
#endif
|
||||
|
||||
#ifdef APPCENTER_UNITY_USE_DISTRIBUTE
|
||||
|
||||
[MSACDistribute setUpdateTrack:(MSACUpdateTrack)kMSUpdateTrack];
|
||||
|
||||
#ifdef APPCENTER_UNITY_USE_CUSTOM_API_URL
|
||||
[MSACDistribute setApiUrl:kMSCustomApiUrl];
|
||||
#endif // APPCENTER_UNITY_USE_CUSTOM_API_URL
|
||||
|
||||
#ifdef APPCENTER_UNITY_USE_CUSTOM_INSTALL_URL
|
||||
[MSACDistribute setInstallUrl:kMSCustomInstallUrl];
|
||||
#endif // APPCENTER_UNITY_USE_CUSTOM_INSTALL_URL
|
||||
|
||||
#ifdef APPCENTER_DISTRIBUTE_DISABLE_AUTOMATIC_CHECK_FOR_UPDATE
|
||||
[MSACDistribute disableAutomaticCheckForUpdate];
|
||||
#endif // APPCENTER_DISTRIBUTE_DISABLE_AUTOMATIC_CHECK_FOR_UPDATE
|
||||
|
||||
#endif // APPCENTER_UNITY_USE_DISTRIBUTE
|
||||
|
||||
NSString *customLogUrl = [[NSUserDefaults standardUserDefaults] objectForKey:kMSLogUrlKey];
|
||||
if (customLogUrl != nil) {
|
||||
[MSACAppCenter setLogUrl:customLogUrl];
|
||||
} else {
|
||||
#ifdef APPCENTER_UNITY_USE_CUSTOM_LOG_URL
|
||||
[MSACAppCenter setLogUrl:kMSCustomLogUrl];
|
||||
#endif
|
||||
}
|
||||
[MSACAppCenter setNetworkRequestsAllowed:[kMSCustomAllowNetworkRequests boolValue]];
|
||||
NSString *customAppSecret = [[NSUserDefaults standardUserDefaults] objectForKey:kMSAppSecretKey];
|
||||
NSString *customAppSecretValue = customAppSecret == nil ? kMSAppSecret : customAppSecret;
|
||||
switch (startTargetValue) {
|
||||
case APPCENTER:
|
||||
[MSACAppCenter start:customAppSecretValue withServices:classes];
|
||||
break;
|
||||
case ONECOLLECTOR:
|
||||
[MSACAppCenter start:[NSString stringWithFormat:@"target=%@", kMSTargetToken] withServices:classes];
|
||||
break;
|
||||
case BOTH:
|
||||
[MSACAppCenter start:[NSString stringWithFormat:@"appsecret=%@;target=%@", customAppSecretValue, kMSTargetToken] withServices:classes];
|
||||
break;
|
||||
case NONE:
|
||||
[MSACAppCenter startWithServices:classes];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,37 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 319e7c6587510e9448244e0315279873
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
- first:
|
||||
iPhone: iOS
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
tvOS: tvOS
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,134 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
#import "AppCenterStarter.h"
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@import AppCenter;
|
||||
|
||||
#ifdef APPCENTER_UNITY_USE_CRASHES
|
||||
@import AppCenterCrashes;
|
||||
#endif
|
||||
|
||||
#ifdef APPCENTER_UNITY_USE_ANALYTICS
|
||||
@import AppCenterAnalytics;
|
||||
#endif
|
||||
|
||||
#ifdef APPCENTER_UNITY_USE_DISTRIBUTE
|
||||
@import AppCenterDistribute;
|
||||
#import "../Distribute/DistributeDelegate.h"
|
||||
#endif
|
||||
|
||||
enum StartupMode {
|
||||
APPCENTER,
|
||||
ONECOLLECTOR,
|
||||
BOTH,
|
||||
NONE,
|
||||
SKIP
|
||||
};
|
||||
|
||||
@implementation AppCenterStarter
|
||||
|
||||
static NSString *const kMSAppSecret = @"appcenter-app-secret";
|
||||
static NSString *const kMSTargetToken = @"appcenter-transmission-target-token";
|
||||
static NSString *const kMSCustomLogUrl = @"custom-log-url";
|
||||
static NSString *const kMSCustomAllowNetworkRequests = @"allow-network-requests";
|
||||
static NSString *const kMSCustomApiUrl = @"custom-api-url";
|
||||
static NSString *const kMSCustomInstallUrl = @"custom-install-url";
|
||||
static NSString *const kMSStartTargetKey = @"MSAppCenterStartTargetUnityKey";
|
||||
static NSString *const kMSStorageSizeKey = @"MSAppCenterMaxStorageSizeUnityKey";
|
||||
static NSString *const kMSLogUrlKey = @"MSAppCenterLogUrlUnityKey";
|
||||
static NSString *const kMSAppSecretKey = @"MSAppCenterAppSecretUnityKey";
|
||||
static NSString *const kMSUpdateTrackKey = @"MSAppCenterUpdateTrackUnityKey";
|
||||
|
||||
static const int kMSLogLevel = 0 /*LOG_LEVEL*/;
|
||||
static const int kMSStartupType = 0 /*STARTUP_TYPE*/;
|
||||
static const int kMSUpdateTrack = 1 /*UPDATE_TRACK*/;
|
||||
|
||||
+ (void)load {
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||
selector:@selector(startAppCenter)
|
||||
name:UIApplicationDidFinishLaunchingNotification
|
||||
object:nil];
|
||||
}
|
||||
|
||||
+ (void)startAppCenter {
|
||||
NSNumber *startTarget = [[NSUserDefaults standardUserDefaults] objectForKey:kMSStartTargetKey];
|
||||
int startTargetValue = startTarget == nil ? kMSStartupType : startTarget.intValue;
|
||||
[MSACAppCenter setLogLevel:(MSACLogLevel)kMSLogLevel];
|
||||
if (startTargetValue == SKIP) {
|
||||
return;
|
||||
}
|
||||
|
||||
NSMutableArray<Class> *classes = [[NSMutableArray alloc] init];
|
||||
|
||||
NSNumber *maxStorageSize = [[NSUserDefaults standardUserDefaults] objectForKey:kMSStorageSizeKey];
|
||||
if (maxStorageSize != nil) {
|
||||
[MSACAppCenter setMaxStorageSize:maxStorageSize
|
||||
completionHandler:^void(BOOL result) {
|
||||
if (!result) {
|
||||
MSACLogWarning(@"MSACAppCenter", @"setMaxStorageSize failed");
|
||||
}
|
||||
}];
|
||||
} else {
|
||||
#ifdef APPCENTER_USE_CUSTOM_MAX_STORAGE_SIZE
|
||||
[MSACAppCenter setMaxStorageSize:APPCENTER_MAX_STORAGE_SIZE
|
||||
completionHandler:^void(BOOL result) {
|
||||
if (!result) {
|
||||
MSACLogWarning(@"MSACAppCenter", @"setMaxStorageSize failed");
|
||||
}
|
||||
}];
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef APPCENTER_UNITY_USE_ANALYTICS
|
||||
[classes addObject:MSACAnalytics.class];
|
||||
#endif
|
||||
|
||||
#ifdef APPCENTER_UNITY_USE_DISTRIBUTE
|
||||
|
||||
[MSACDistribute setUpdateTrack:(MSACUpdateTrack)kMSUpdateTrack];
|
||||
|
||||
#ifdef APPCENTER_UNITY_USE_CUSTOM_API_URL
|
||||
[MSACDistribute setApiUrl:kMSCustomApiUrl];
|
||||
#endif // APPCENTER_UNITY_USE_CUSTOM_API_URL
|
||||
|
||||
#ifdef APPCENTER_UNITY_USE_CUSTOM_INSTALL_URL
|
||||
[MSACDistribute setInstallUrl:kMSCustomInstallUrl];
|
||||
#endif // APPCENTER_UNITY_USE_CUSTOM_INSTALL_URL
|
||||
|
||||
#ifdef APPCENTER_DISTRIBUTE_DISABLE_AUTOMATIC_CHECK_FOR_UPDATE
|
||||
[MSACDistribute disableAutomaticCheckForUpdate];
|
||||
#endif // APPCENTER_DISTRIBUTE_DISABLE_AUTOMATIC_CHECK_FOR_UPDATE
|
||||
|
||||
#endif // APPCENTER_UNITY_USE_DISTRIBUTE
|
||||
|
||||
NSString *customLogUrl = [[NSUserDefaults standardUserDefaults] objectForKey:kMSLogUrlKey];
|
||||
if (customLogUrl != nil) {
|
||||
[MSACAppCenter setLogUrl:customLogUrl];
|
||||
} else {
|
||||
#ifdef APPCENTER_UNITY_USE_CUSTOM_LOG_URL
|
||||
[MSACAppCenter setLogUrl:kMSCustomLogUrl];
|
||||
#endif
|
||||
}
|
||||
[MSACAppCenter setNetworkRequestsAllowed:[kMSCustomAllowNetworkRequests boolValue]];
|
||||
NSString *customAppSecret = [[NSUserDefaults standardUserDefaults] objectForKey:kMSAppSecretKey];
|
||||
NSString *customAppSecretValue = customAppSecret == nil ? kMSAppSecret : customAppSecret;
|
||||
switch (startTargetValue) {
|
||||
case APPCENTER:
|
||||
[MSACAppCenter start:customAppSecretValue withServices:classes];
|
||||
break;
|
||||
case ONECOLLECTOR:
|
||||
[MSACAppCenter start:[NSString stringWithFormat:@"target=%@", kMSTargetToken] withServices:classes];
|
||||
break;
|
||||
case BOTH:
|
||||
[MSACAppCenter start:[NSString stringWithFormat:@"appsecret=%@;target=%@", customAppSecretValue, kMSTargetToken] withServices:classes];
|
||||
break;
|
||||
case NONE:
|
||||
[MSACAppCenter startWithServices:classes];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 108740626ae994147a6859d8bc3232ed
|
||||
timeCreated: 1512519361
|
||||
licenseType: Free
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,27 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
#import <AppCenter/AppCenter.h>
|
||||
|
||||
extern "C" void appcenter_unity_set_log_level(int logLevel);
|
||||
extern "C" int appcenter_unity_get_log_level();
|
||||
extern "C" bool appcenter_unity_is_configured();
|
||||
extern "C" void appcenter_unity_set_log_url(const char* logUrl);
|
||||
extern "C" void appcenter_unity_set_user_id(char* userId);
|
||||
extern "C" void appcenter_unity_set_enabled(bool isEnabled);
|
||||
extern "C" void appcenter_unity_set_network_requests_allowed(bool isAllowed);
|
||||
extern "C" bool appcenter_unity_is_network_requests_allowed();
|
||||
extern "C" bool appcenter_unity_is_enabled();
|
||||
extern "C" const char* appcenter_unity_get_sdk_version();
|
||||
extern "C" const char* appcenter_unity_get_install_id();
|
||||
extern "C" void appcenter_unity_start(const char* appSecret, void** services, int count);
|
||||
extern "C" void appcenter_unity_start_no_secret(void** services, int count);
|
||||
extern "C" void appcenter_unity_start_from_library(void** services, int count);
|
||||
extern "C" void appcenter_unity_set_custom_properties(MSACCustomProperties* properties);
|
||||
extern "C" void appcenter_unity_set_wrapper_sdk(const char* wrapperSdkVersion,
|
||||
const char* wrapperSdkName,
|
||||
const char* wrapperRuntimeVersion,
|
||||
const char* liveUpdateReleaseLabel,
|
||||
const char* liveUpdateDeploymentKey,
|
||||
const char* liveUpdatePackageHash);
|
||||
extern "C" void appcenter_unity_set_storage_size(long size, void(* completionHandler)(bool));
|
||||
@@ -0,0 +1,33 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5c100da765363433c9bef3b81d036625
|
||||
timeCreated: 1497286029
|
||||
licenseType: Pro
|
||||
PluginImporter:
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
platformData:
|
||||
data:
|
||||
first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
data:
|
||||
first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
data:
|
||||
first:
|
||||
iPhone: iOS
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,115 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
#import "AppCenterUnity.h"
|
||||
#import "Utility/NSStringHelper.h"
|
||||
#import <AppCenter/AppCenter.h>
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NSMutableArray<Class>* get_services_array(void** services, int count) {
|
||||
NSMutableArray<Class>* servicesArray = [NSMutableArray new];
|
||||
for (int i = 0; i < count; i++) {
|
||||
[servicesArray addObject:(Class)CFBridgingRelease(services[i])];
|
||||
}
|
||||
return servicesArray;
|
||||
}
|
||||
|
||||
void appcenter_unity_set_log_level(int logLevel)
|
||||
{
|
||||
[MSACAppCenter setLogLevel:(MSACLogLevel)logLevel];
|
||||
}
|
||||
|
||||
int appcenter_unity_get_log_level()
|
||||
{
|
||||
return (int)MSACAppCenter.logLevel;
|
||||
}
|
||||
|
||||
bool appcenter_unity_is_configured()
|
||||
{
|
||||
return [MSACAppCenter isConfigured];
|
||||
}
|
||||
|
||||
void appcenter_unity_set_log_url(const char* logUrl)
|
||||
{
|
||||
[MSACAppCenter setLogUrl:appcenter_unity_cstr_to_ns_string(logUrl)];
|
||||
}
|
||||
|
||||
void appcenter_unity_set_user_id(char* userId)
|
||||
{
|
||||
[MSACAppCenter setUserId: appcenter_unity_cstr_to_ns_string(userId)];
|
||||
}
|
||||
|
||||
void appcenter_unity_set_enabled(bool isEnabled)
|
||||
{
|
||||
[MSACAppCenter setEnabled:isEnabled];
|
||||
}
|
||||
|
||||
void appcenter_unity_set_network_requests_allowed(bool isAllowed)
|
||||
{
|
||||
[MSACAppCenter setNetworkRequestsAllowed:isAllowed];
|
||||
}
|
||||
|
||||
bool appcenter_unity_is_network_requests_allowed()
|
||||
{
|
||||
return [MSACAppCenter isNetworkRequestsAllowed];
|
||||
}
|
||||
|
||||
void appcenter_unity_start(const char* appSecret, void** services, int count) {
|
||||
NSMutableArray<Class>* servicesArray = get_services_array(services, count);
|
||||
[MSACAppCenter start:appcenter_unity_cstr_to_ns_string(appSecret) withServices:servicesArray];
|
||||
}
|
||||
|
||||
void appcenter_unity_start_no_secret(void** services, int count) {
|
||||
NSMutableArray<Class>* servicesArray = get_services_array(services, count);
|
||||
[MSACAppCenter startWithServices:servicesArray];
|
||||
}
|
||||
|
||||
void appcenter_unity_start_from_library(void** services, int count) {
|
||||
NSMutableArray<Class>* servicesArray = get_services_array(services, count);
|
||||
[MSACAppCenter startFromLibraryWithServices:servicesArray];
|
||||
}
|
||||
|
||||
bool appcenter_unity_is_enabled()
|
||||
{
|
||||
return [MSACAppCenter isEnabled];
|
||||
}
|
||||
|
||||
const char* appcenter_unity_get_install_id()
|
||||
{
|
||||
NSString *uuidString = [[MSACAppCenter installId] UUIDString];
|
||||
return appcenter_unity_ns_string_to_cstr(uuidString);
|
||||
}
|
||||
|
||||
const char* appcenter_unity_get_sdk_version()
|
||||
{
|
||||
return appcenter_unity_ns_string_to_cstr([MSACAppCenter sdkVersion]);
|
||||
}
|
||||
|
||||
void appcenter_unity_set_custom_properties(MSACCustomProperties* properties)
|
||||
{
|
||||
[MSACAppCenter setCustomProperties:properties];
|
||||
}
|
||||
|
||||
void appcenter_unity_set_wrapper_sdk(const char* wrapperSdkVersion,
|
||||
const char* wrapperSdkName,
|
||||
const char* wrapperRuntimeVersion,
|
||||
const char* liveUpdateReleaseLabel,
|
||||
const char* liveUpdateDeploymentKey,
|
||||
const char* liveUpdatePackageHash)
|
||||
{
|
||||
MSACWrapperSdk *wrapperSdk = [[MSACWrapperSdk alloc]
|
||||
initWithWrapperSdkVersion:appcenter_unity_cstr_to_ns_string(wrapperSdkVersion)
|
||||
wrapperSdkName:appcenter_unity_cstr_to_ns_string(wrapperSdkName)
|
||||
wrapperRuntimeVersion:appcenter_unity_cstr_to_ns_string(wrapperRuntimeVersion)
|
||||
liveUpdateReleaseLabel:appcenter_unity_cstr_to_ns_string(liveUpdateReleaseLabel)
|
||||
liveUpdateDeploymentKey:appcenter_unity_cstr_to_ns_string(liveUpdateDeploymentKey)
|
||||
liveUpdatePackageHash:appcenter_unity_cstr_to_ns_string(liveUpdatePackageHash)];
|
||||
[MSACAppCenter setWrapperSdk:wrapperSdk];
|
||||
}
|
||||
|
||||
void appcenter_unity_set_storage_size(long size, void(* completionHandler)(bool))
|
||||
{
|
||||
[MSACAppCenter setMaxStorageSize:size completionHandler:^void(BOOL result){
|
||||
completionHandler(result);
|
||||
}];
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3b5db8253bf544e5c98f4452295247d7
|
||||
timeCreated: 1497286025
|
||||
licenseType: Pro
|
||||
PluginImporter:
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
platformData:
|
||||
data:
|
||||
first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
data:
|
||||
first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
data:
|
||||
first:
|
||||
iPhone: iOS
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,13 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
#import <AppCenter/AppCenter.h>
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
// Don't need to return value because reference is kept by wrapper
|
||||
extern "C" MSACCustomProperties* appcenter_unity_custom_properties_create();
|
||||
extern "C" void appcenter_unity_custom_properties_set_string(MSACCustomProperties* properties, char* key, char* val);
|
||||
extern "C" void appcenter_unity_custom_properties_set_number(MSACCustomProperties* properties, char* key, NSNumber* val);
|
||||
extern "C" void appcenter_unity_custom_properties_set_bool(MSACCustomProperties* properties, char* key, bool val);
|
||||
extern "C" void appcenter_unity_custom_properties_set_date(MSACCustomProperties* properties, char* key, NSDate* val);
|
||||
extern "C" void appcenter_unity_custom_properties_clear(MSACCustomProperties* properties, char* key);
|
||||
@@ -0,0 +1,33 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3b9806201870a40199602233a9b5a765
|
||||
timeCreated: 1498515104
|
||||
licenseType: Pro
|
||||
PluginImporter:
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
platformData:
|
||||
data:
|
||||
first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
data:
|
||||
first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
data:
|
||||
first:
|
||||
iPhone: iOS
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,36 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
#import "CustomProperties.h"
|
||||
#import <AppCenter/AppCenter.h>
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
MSACCustomProperties* appcenter_unity_custom_properties_create()
|
||||
{
|
||||
return [[MSACCustomProperties alloc] init];
|
||||
}
|
||||
|
||||
void appcenter_unity_custom_properties_set_string(MSACCustomProperties* properties, char* key, char* val)
|
||||
{
|
||||
[properties setString:[NSString stringWithUTF8String:val] forKey:[NSString stringWithUTF8String:key]];
|
||||
}
|
||||
|
||||
void appcenter_unity_custom_properties_set_number(MSACCustomProperties* properties, char* key, NSNumber* val)
|
||||
{
|
||||
[properties setNumber:val forKey:[NSString stringWithUTF8String:key]];
|
||||
}
|
||||
|
||||
void appcenter_unity_custom_properties_set_bool(MSACCustomProperties* properties, char* key, bool val)
|
||||
{
|
||||
[properties setBool:val forKey:[NSString stringWithUTF8String:key]];
|
||||
}
|
||||
|
||||
void appcenter_unity_custom_properties_set_date(MSACCustomProperties* properties, char* key, NSDate* val)
|
||||
{
|
||||
[properties setDate:val forKey:[NSString stringWithUTF8String:key]];
|
||||
}
|
||||
|
||||
void appcenter_unity_custom_properties_clear(MSACCustomProperties* properties, char* key)
|
||||
{
|
||||
[properties clearPropertyForKey:[NSString stringWithUTF8String:key]];
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6cee2815ee4e04655909ecaba350282c
|
||||
timeCreated: 1498515094
|
||||
licenseType: Pro
|
||||
PluginImporter:
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
platformData:
|
||||
data:
|
||||
first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
data:
|
||||
first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
data:
|
||||
first:
|
||||
iPhone: iOS
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 57b1dd6d6806d452d9dd3c180ce26a1f
|
||||
folderAsset: yes
|
||||
timeCreated: 1498062770
|
||||
licenseType: Pro
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,88 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
#if UNITY_IOS && !UNITY_EDITOR
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace Microsoft.AppCenter.Unity
|
||||
{
|
||||
public static class DeviceHelper
|
||||
{
|
||||
public static Device Convert(IntPtr devicePtr)
|
||||
{
|
||||
if (devicePtr == IntPtr.Zero)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
var sdkName = app_center_unity_device_sdk_name(devicePtr);
|
||||
var sdkVersion = app_center_unity_device_sdk_version(devicePtr);
|
||||
var model = app_center_unity_device_model(devicePtr);
|
||||
var oemName = app_center_unity_device_oem_name(devicePtr);
|
||||
var osName = app_center_unity_device_os_name(devicePtr);
|
||||
var osVersion = app_center_unity_device_os_version(devicePtr);
|
||||
var osBuild = app_center_unity_device_os_build(devicePtr);
|
||||
var osApiLevel = app_center_unity_device_os_api_level(devicePtr);
|
||||
var locale = app_center_unity_device_locale(devicePtr);
|
||||
var timeZoneOffset = app_center_unity_device_time_zone_offset(devicePtr);
|
||||
var screenSize = app_center_unity_device_screen_size(devicePtr);
|
||||
var appVersion = app_center_unity_device_app_version(devicePtr);
|
||||
var carrierName = app_center_unity_device_carrier_name(devicePtr);
|
||||
var carrierCountry = app_center_unity_device_carrier_country(devicePtr);
|
||||
var appBuild = app_center_unity_device_app_build(devicePtr);
|
||||
var appNamespace = app_center_unity_device_app_namespace(devicePtr);
|
||||
return new Device(sdkName, sdkVersion, model, oemName, osName, osVersion, osBuild, osApiLevel,
|
||||
locale, timeZoneOffset, screenSize, appVersion, carrierName, carrierCountry,
|
||||
appBuild, appNamespace);
|
||||
}
|
||||
|
||||
[DllImport("__Internal")]
|
||||
private static extern string app_center_unity_device_sdk_name(IntPtr device);
|
||||
|
||||
[DllImport("__Internal")]
|
||||
private static extern string app_center_unity_device_sdk_version(IntPtr device);
|
||||
|
||||
[DllImport("__Internal")]
|
||||
private static extern string app_center_unity_device_model(IntPtr device);
|
||||
|
||||
[DllImport("__Internal")]
|
||||
private static extern string app_center_unity_device_oem_name(IntPtr device);
|
||||
|
||||
[DllImport("__Internal")]
|
||||
private static extern string app_center_unity_device_os_name(IntPtr device);
|
||||
|
||||
[DllImport("__Internal")]
|
||||
private static extern string app_center_unity_device_os_version(IntPtr device);
|
||||
|
||||
[DllImport("__Internal")]
|
||||
private static extern string app_center_unity_device_os_build(IntPtr device);
|
||||
|
||||
[DllImport("__Internal")]
|
||||
private static extern int app_center_unity_device_os_api_level(IntPtr device);
|
||||
|
||||
[DllImport("__Internal")]
|
||||
private static extern string app_center_unity_device_locale(IntPtr device);
|
||||
|
||||
[DllImport("__Internal")]
|
||||
private static extern int app_center_unity_device_time_zone_offset(IntPtr device);
|
||||
|
||||
[DllImport("__Internal")]
|
||||
private static extern string app_center_unity_device_screen_size(IntPtr device);
|
||||
|
||||
[DllImport("__Internal")]
|
||||
private static extern string app_center_unity_device_app_version(IntPtr device);
|
||||
|
||||
[DllImport("__Internal")]
|
||||
private static extern string app_center_unity_device_carrier_name(IntPtr device);
|
||||
|
||||
[DllImport("__Internal")]
|
||||
private static extern string app_center_unity_device_carrier_country(IntPtr device);
|
||||
|
||||
[DllImport("__Internal")]
|
||||
private static extern string app_center_unity_device_app_build(IntPtr device);
|
||||
|
||||
[DllImport("__Internal")]
|
||||
private static extern string app_center_unity_device_app_namespace(IntPtr device);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1cbedebc3603346ccba2733a839112d0
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,19 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
extern "C" const char* app_center_unity_device_sdk_name(void* device);
|
||||
extern "C" const char* app_center_unity_device_sdk_version(void* device);
|
||||
extern "C" const char* app_center_unity_device_model(void* device);
|
||||
extern "C" const char* app_center_unity_device_oem_name(void* device);
|
||||
extern "C" const char* app_center_unity_device_os_name(void* device);
|
||||
extern "C" const char* app_center_unity_device_os_version(void* device);
|
||||
extern "C" const char* app_center_unity_device_os_build(void* device);
|
||||
extern "C" int app_center_unity_device_os_api_level(void* device);
|
||||
extern "C" const char* app_center_unity_device_locale(void* device);
|
||||
extern "C" int app_center_unity_device_time_zone_offset(void* device);
|
||||
extern "C" const char* app_center_unity_device_screen_size(void* device);
|
||||
extern "C" const char* app_center_unity_device_app_version(void* device);
|
||||
extern "C" const char* app_center_unity_device_carrier_name(void* device);
|
||||
extern "C" const char* app_center_unity_device_carrier_country(void* device);
|
||||
extern "C" const char* app_center_unity_device_app_build(void* device);
|
||||
extern "C" const char* app_center_unity_device_app_namespace(void* device);
|
||||
@@ -0,0 +1,24 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bad688f7eba404cc4a90a8a0e0a1263f
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,102 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
#import <AppCenter/AppCenter.h>
|
||||
#import "DeviceHelper.h"
|
||||
#import "NSStringHelper.h"
|
||||
|
||||
const char* app_center_unity_device_sdk_name(void* device)
|
||||
{
|
||||
MSACDevice *deviceInfo = (__bridge MSACDevice*)device;
|
||||
return appcenter_unity_ns_string_to_cstr([deviceInfo sdkName]);
|
||||
}
|
||||
|
||||
const char* app_center_unity_device_sdk_version(void* device)
|
||||
{
|
||||
MSACDevice *deviceInfo = (__bridge MSACDevice*)device;
|
||||
return appcenter_unity_ns_string_to_cstr([deviceInfo sdkVersion]);
|
||||
}
|
||||
|
||||
const char* app_center_unity_device_model(void* device)
|
||||
{
|
||||
MSACDevice *deviceInfo = (__bridge MSACDevice*)device;
|
||||
return appcenter_unity_ns_string_to_cstr([deviceInfo model]);
|
||||
}
|
||||
|
||||
const char* app_center_unity_device_oem_name(void* device)
|
||||
{
|
||||
MSACDevice *deviceInfo = (__bridge MSACDevice*)device;
|
||||
return appcenter_unity_ns_string_to_cstr([deviceInfo oemName]);
|
||||
}
|
||||
|
||||
const char* app_center_unity_device_os_name(void* device)
|
||||
{
|
||||
MSACDevice *deviceInfo = (__bridge MSACDevice*)device;
|
||||
return appcenter_unity_ns_string_to_cstr([deviceInfo osName]);
|
||||
}
|
||||
|
||||
const char* app_center_unity_device_os_version(void* device)
|
||||
{
|
||||
MSACDevice *deviceInfo = (__bridge MSACDevice*)device;
|
||||
return appcenter_unity_ns_string_to_cstr([deviceInfo osVersion]);
|
||||
}
|
||||
|
||||
const char* app_center_unity_device_os_build(void* device)
|
||||
{
|
||||
MSACDevice *deviceInfo = (__bridge MSACDevice*)device;
|
||||
return appcenter_unity_ns_string_to_cstr([deviceInfo osBuild]);
|
||||
}
|
||||
|
||||
int app_center_unity_device_os_api_level(void* device)
|
||||
{
|
||||
MSACDevice *deviceInfo = (__bridge MSACDevice*)device;
|
||||
return [[deviceInfo osApiLevel] intValue];
|
||||
}
|
||||
|
||||
const char* app_center_unity_device_locale(void* device)
|
||||
{
|
||||
MSACDevice *deviceInfo = (__bridge MSACDevice*)device;
|
||||
return appcenter_unity_ns_string_to_cstr([deviceInfo locale]);
|
||||
}
|
||||
|
||||
int app_center_unity_device_time_zone_offset(void* device)
|
||||
{
|
||||
MSACDevice *deviceInfo = (__bridge MSACDevice*)device;
|
||||
return [[deviceInfo timeZoneOffset] intValue];
|
||||
}
|
||||
|
||||
const char* app_center_unity_device_screen_size(void* device)
|
||||
{
|
||||
MSACDevice *deviceInfo = (__bridge MSACDevice*)device;
|
||||
return appcenter_unity_ns_string_to_cstr([deviceInfo screenSize]);
|
||||
}
|
||||
|
||||
const char* app_center_unity_device_app_version(void* device)
|
||||
{
|
||||
MSACDevice *deviceInfo = (__bridge MSACDevice*)device;
|
||||
return appcenter_unity_ns_string_to_cstr([deviceInfo appVersion]);
|
||||
}
|
||||
|
||||
const char* app_center_unity_device_carrier_name(void* device)
|
||||
{
|
||||
MSACDevice *deviceInfo = (__bridge MSACDevice*)device;
|
||||
return appcenter_unity_ns_string_to_cstr([deviceInfo carrierName]);
|
||||
}
|
||||
|
||||
const char* app_center_unity_device_carrier_country(void* device)
|
||||
{
|
||||
MSACDevice *deviceInfo = (__bridge MSACDevice*)device;
|
||||
return appcenter_unity_ns_string_to_cstr([deviceInfo carrierCountry]);
|
||||
}
|
||||
|
||||
const char* app_center_unity_device_app_build(void* device)
|
||||
{
|
||||
MSACDevice *deviceInfo = (__bridge MSACDevice*)device;
|
||||
return appcenter_unity_ns_string_to_cstr([deviceInfo appBuild]);
|
||||
}
|
||||
|
||||
const char* app_center_unity_device_app_namespace(void* device)
|
||||
{
|
||||
MSACDevice *deviceInfo = (__bridge MSACDevice*)device;
|
||||
return appcenter_unity_ns_string_to_cstr([deviceInfo appNamespace]);
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 03b9cfe7b6a4b4b70acf8694de18052e
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
- first:
|
||||
iPhone: iOS
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
tvOS: tvOS
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,26 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
#if UNITY_IOS
|
||||
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Microsoft.AppCenter.Unity.Internal.Utility
|
||||
{
|
||||
public class NSDateHelper
|
||||
{
|
||||
public static IntPtr DateTimeConvert(DateTime date)
|
||||
{
|
||||
var unixStartTime = new DateTime(1970, 1, 1, 0, 0, 0, 0);
|
||||
var timeSpan = date - unixStartTime;
|
||||
var interval = (long)(timeSpan.TotalSeconds);
|
||||
return appcenter_unity_ns_date_convert(interval);
|
||||
}
|
||||
|
||||
[DllImport("__Internal")]
|
||||
private static extern IntPtr appcenter_unity_ns_date_convert(long interval);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3efba9dacbfa347588fdde9d1cd911ac
|
||||
timeCreated: 1498578955
|
||||
licenseType: Pro
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,11 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
#ifndef NS_DATE_HELPER_H
|
||||
#define NS_DATE_HELPER_H
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
extern "C" void* appcenter_unity_ns_date_convert(long interval);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,33 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ab35984e9d22f4c5a93a2dd4af548412
|
||||
timeCreated: 1498584208
|
||||
licenseType: Pro
|
||||
PluginImporter:
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
platformData:
|
||||
data:
|
||||
first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
data:
|
||||
first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
data:
|
||||
first:
|
||||
iPhone: iOS
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,10 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
#import "NSDateHelper.h"
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
void* appcenter_unity_ns_date_convert(long interval)
|
||||
{
|
||||
return (void *)CFBridgingRetain([[NSDate alloc] initWithTimeIntervalSince1970:interval]);
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
fileFormatVersion: 2
|
||||
guid: dc5f65baccfe345be8fd3b0531c51edd
|
||||
timeCreated: 1498584195
|
||||
licenseType: Pro
|
||||
PluginImporter:
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
platformData:
|
||||
data:
|
||||
first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
data:
|
||||
first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
data:
|
||||
first:
|
||||
iPhone: iOS
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,34 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
#if UNITY_IOS && !UNITY_EDITOR
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace Microsoft.AppCenter.Unity.Internal.Utility
|
||||
{
|
||||
public static partial class NSErrorHelper
|
||||
{
|
||||
public static Exception ToSystemException(IntPtr nsErrorPtr)
|
||||
{
|
||||
if (nsErrorPtr == IntPtr.Zero)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
var domain = app_center_unity_nserror_domain(nsErrorPtr);
|
||||
var errorCode = app_center_unity_nserror_code(nsErrorPtr);
|
||||
var description = app_center_unity_nserror_description(nsErrorPtr);
|
||||
return new Exception(string.Format("Domain: {0}, error code: {1}, description: {2}", domain, errorCode, description));
|
||||
}
|
||||
|
||||
[DllImport("__Internal")]
|
||||
private static extern string app_center_unity_nserror_domain(IntPtr error);
|
||||
|
||||
[DllImport("__Internal")]
|
||||
private static extern long app_center_unity_nserror_code(IntPtr error);
|
||||
|
||||
[DllImport("__Internal")]
|
||||
private static extern string app_center_unity_nserror_description(IntPtr error);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f73030502bdd74d458f10a7c1a597e3b
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,6 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
extern "C" const char* app_center_unity_nserror_domain(void* error);
|
||||
extern "C" long app_center_unity_nserror_code(void* error);
|
||||
extern "C" const char* app_center_unity_nserror_description(void* error);
|
||||
@@ -0,0 +1,24 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 23252b01a9d2f4f40ba6f2f0db9efbd5
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,23 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
#import "NSStringHelper.h"
|
||||
#import "NSErrorHelper.h"
|
||||
|
||||
const char* app_center_unity_nserror_domain(void* error)
|
||||
{
|
||||
NSError *nsError = (__bridge NSError*)error;
|
||||
return appcenter_unity_ns_string_to_cstr([nsError domain]);
|
||||
}
|
||||
|
||||
long app_center_unity_nserror_code(void* error)
|
||||
{
|
||||
NSError *nsError = (__bridge NSError*)error;
|
||||
return [nsError code];
|
||||
}
|
||||
|
||||
const char* app_center_unity_nserror_description(void* error)
|
||||
{
|
||||
NSError *nsError = (__bridge NSError*)error;
|
||||
return appcenter_unity_ns_string_to_cstr([nsError localizedDescription]);
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b122ae60c2ba54e659d9568ad78400e7
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
- first:
|
||||
iPhone: iOS
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
tvOS: tvOS
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,48 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
#if UNITY_IOS
|
||||
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace Microsoft.AppCenter.Unity.Internal.Utility
|
||||
{
|
||||
public class NSNumberHelper
|
||||
{
|
||||
[DllImport("__Internal")]
|
||||
private static extern IntPtr appcenter_unity_nsnumber_convert_int(int val);
|
||||
|
||||
[DllImport("__Internal")]
|
||||
private static extern IntPtr appcenter_unity_nsnumber_convert_long(long val);
|
||||
|
||||
[DllImport("__Internal")]
|
||||
private static extern IntPtr appcenter_unity_nsnumber_convert_float(float val);
|
||||
|
||||
[DllImport("__Internal")]
|
||||
private static extern IntPtr appcenter_unity_nsnumber_convert_double(double val);
|
||||
|
||||
public static IntPtr Convert(int val)
|
||||
{
|
||||
return appcenter_unity_nsnumber_convert_int(val);
|
||||
}
|
||||
|
||||
public static IntPtr Convert(long val)
|
||||
{
|
||||
return appcenter_unity_nsnumber_convert_long(val);
|
||||
}
|
||||
|
||||
public static IntPtr Convert(float val)
|
||||
{
|
||||
return appcenter_unity_nsnumber_convert_float(val);
|
||||
}
|
||||
|
||||
public static IntPtr Convert(double val)
|
||||
{
|
||||
return appcenter_unity_nsnumber_convert_double(val);
|
||||
}
|
||||
|
||||
//TODO how to support 'decimal'?
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f53b041fddc194840aae7635b39bfde6
|
||||
timeCreated: 1498578955
|
||||
licenseType: Pro
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,14 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
#ifndef NS_NUMBER_HELPER_H
|
||||
#define NS_NUMBER_HELPER_H
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
extern "C" void* appcenter_unity_nsnumber_convert_int(int val);
|
||||
extern "C" NSNumber* appcenter_unity_nsnumber_convert_long(long val);
|
||||
extern "C" NSNumber* appcenter_unity_nsnumber_convert_float(float val);
|
||||
extern "C" NSNumber* appcenter_unity_nsnumber_convert_double(double val);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,33 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 80eab99a01c404cea937a54c788f7f0c
|
||||
timeCreated: 1498583134
|
||||
licenseType: Pro
|
||||
PluginImporter:
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
platformData:
|
||||
data:
|
||||
first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
data:
|
||||
first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
data:
|
||||
first:
|
||||
iPhone: iOS
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,25 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
#import "NSNumberHelper.h"
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
void* appcenter_unity_nsnumber_convert_int(int val)
|
||||
{
|
||||
return (__bridge void*)[NSNumber numberWithInt:val];
|
||||
}
|
||||
|
||||
NSNumber* appcenter_unity_nsnumber_convert_long(long val)
|
||||
{
|
||||
return [NSNumber numberWithLong:val];
|
||||
}
|
||||
|
||||
NSNumber* appcenter_unity_nsnumber_convert_float(float val)
|
||||
{
|
||||
return [NSNumber numberWithFloat:val];
|
||||
}
|
||||
|
||||
NSNumber* appcenter_unity_nsnumber_convert_double(double val)
|
||||
{
|
||||
return [NSNumber numberWithDouble:val];
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0eecac2606cb14ec6a20fd15ec08feb2
|
||||
timeCreated: 1498583125
|
||||
licenseType: Pro
|
||||
PluginImporter:
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
platformData:
|
||||
data:
|
||||
first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
data:
|
||||
first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
data:
|
||||
first:
|
||||
iPhone: iOS
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,36 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
#if UNITY_IOS
|
||||
using System.Runtime.InteropServices;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Microsoft.AppCenter.Unity.Internal.Utility
|
||||
{
|
||||
public class NSStringDictionaryHelper
|
||||
{
|
||||
public static Dictionary<string, string> NSDictionaryConvert(IntPtr nsDictionary)
|
||||
{
|
||||
var length = appcenter_unity_ns_dictionary_get_length(nsDictionary);
|
||||
var dictionary = new Dictionary<string, string>();
|
||||
for (int i = 0; i < length; ++i)
|
||||
{
|
||||
var key = appcenter_unity_ns_string_dictionary_get_key_at_idx(nsDictionary, i);
|
||||
var value = appcenter_unity_ns_string_dictionary_get_value_for_key(nsDictionary, key);
|
||||
dictionary[key] = value;
|
||||
}
|
||||
return dictionary;
|
||||
}
|
||||
|
||||
[DllImport("__Internal")]
|
||||
private static extern string appcenter_unity_ns_string_dictionary_get_key_at_idx(IntPtr dictionary, int idx);
|
||||
|
||||
[DllImport("__Internal")]
|
||||
private static extern string appcenter_unity_ns_string_dictionary_get_value_for_key(IntPtr dictionary, string key);
|
||||
|
||||
[DllImport("__Internal")]
|
||||
private static extern uint appcenter_unity_ns_dictionary_get_length(IntPtr dictionary);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4b38da4320f354ed2af0a1af947badd9
|
||||
timeCreated: 1498075853
|
||||
licenseType: Pro
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,17 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
#ifndef NS_STRING_DICTIONARY_HELPER_H
|
||||
#define NS_STRING_DICTIONARY_HELPER_H
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
extern "C" const char* appcenter_unity_ns_string_dictionary_get_key_at_idx(NSDictionary *dictionary, int idx);
|
||||
|
||||
extern "C" const char* appcenter_unity_ns_string_dictionary_get_value_for_key(NSDictionary *dictionary, char* key);
|
||||
|
||||
extern "C" size_t appcenter_unity_ns_dictionary_get_length(NSDictionary *dictionary);
|
||||
|
||||
extern "C" NSDictionary* appcenter_unity_create_ns_string_dictionary(char** keys, char** values, int count);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,33 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5d5be32a195b94d58b0410f7d8eb3e82
|
||||
timeCreated: 1498062779
|
||||
licenseType: Pro
|
||||
PluginImporter:
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
platformData:
|
||||
data:
|
||||
first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
data:
|
||||
first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
data:
|
||||
first:
|
||||
iPhone: iOS
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,36 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
#import "NSStringDictionaryHelper.h"
|
||||
#import "NSStringHelper.h"
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
const char *appcenter_unity_ns_string_dictionary_get_key_at_idx(NSDictionary *dictionary, int idx) {
|
||||
id sortKeys = ^(NSString *key1, NSString *key2) {
|
||||
return [key1 compare:key2];
|
||||
};
|
||||
NSArray *keys = [[dictionary allKeys] sortedArrayUsingComparator:sortKeys];
|
||||
return appcenter_unity_ns_string_to_cstr(keys[idx]);
|
||||
}
|
||||
|
||||
const char *appcenter_unity_ns_string_dictionary_get_value_for_key(NSDictionary *dictionary, char *key) {
|
||||
NSString *keyString = [NSString stringWithUTF8String:key];
|
||||
return appcenter_unity_ns_string_to_cstr([dictionary objectForKey:keyString]);
|
||||
}
|
||||
|
||||
NSDictionary *appcenter_unity_create_ns_string_dictionary(char **keys, char **values, int count) {
|
||||
if (count == 0) {
|
||||
return nil;
|
||||
}
|
||||
|
||||
// Convert the two arrays to a single dictionary
|
||||
NSMutableDictionary<NSString *, NSString *> *nsdictionary = [[NSMutableDictionary alloc] initWithCapacity:count];
|
||||
for (int i = 0; i < count; ++i) {
|
||||
NSString *key = appcenter_unity_cstr_to_ns_string(keys[i]);
|
||||
NSString *value = appcenter_unity_cstr_to_ns_string(values[i]);
|
||||
[nsdictionary setValue:value forKey:key];
|
||||
}
|
||||
return nsdictionary;
|
||||
}
|
||||
|
||||
size_t appcenter_unity_ns_dictionary_get_length(NSDictionary *dictionary) { return [dictionary count]; }
|
||||
@@ -0,0 +1,33 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 21e289077520b433ca6d72c25f19bcbb
|
||||
timeCreated: 1498062777
|
||||
licenseType: Pro
|
||||
PluginImporter:
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
platformData:
|
||||
data:
|
||||
first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
data:
|
||||
first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
data:
|
||||
first:
|
||||
iPhone: iOS
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,12 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
#ifndef NS_STRING_HELPER_H
|
||||
#define NS_STRING_HELPER_H
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
extern "C" const char* appcenter_unity_ns_string_to_cstr(NSString* nsstring);
|
||||
extern "C" NSString* appcenter_unity_cstr_to_ns_string(const char* str);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,33 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 90801404dc9c24b02802066bad5dc732
|
||||
timeCreated: 1498063641
|
||||
licenseType: Pro
|
||||
PluginImporter:
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
platformData:
|
||||
data:
|
||||
first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
data:
|
||||
first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
data:
|
||||
first:
|
||||
iPhone: iOS
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,28 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
#import "NSStringHelper.h"
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
const char* appcenter_unity_ns_string_to_cstr(NSString* nsstring)
|
||||
{
|
||||
if (!nsstring)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// It seems that with (at least) IL2CPP, when returning a char* that is to be
|
||||
// converted to a System.String in C#, the char array is freed - which causes
|
||||
// a double-deallocation if ARC also tries to free it. To prevent this, we
|
||||
// must return a manually allocated copy of the string returned by "UTF8String"
|
||||
const char *cstring = [nsstring UTF8String];
|
||||
size_t cstringLength = strlen(cstring) + 1; // +1 for '\0'
|
||||
char *cstring_copy = (char*)malloc(cstringLength);
|
||||
strncpy(cstring_copy, cstring, cstringLength);
|
||||
return cstring_copy;
|
||||
}
|
||||
|
||||
NSString* appcenter_unity_cstr_to_ns_string(const char* str)
|
||||
{
|
||||
return str ? [NSString stringWithUTF8String:str] : nil;
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 690b05b14d3e640429af5eaacfdec2ca
|
||||
timeCreated: 1498063660
|
||||
licenseType: Pro
|
||||
PluginImporter:
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
platformData:
|
||||
data:
|
||||
first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
data:
|
||||
first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
data:
|
||||
first:
|
||||
iPhone: iOS
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in new issue
Block a user