mirror of
https://github.com/SideStore/SideStore.git
synced 2026-02-09 06:43:25 +01:00
Adds VS App Center analytics + crash reporting
Currently tracks install, refresh, and update app events.
This commit is contained in:
@@ -19,6 +19,7 @@
|
||||
BF08858322DE795100DE9F1E /* MyAppsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF08858222DE795100DE9F1E /* MyAppsViewController.swift */; };
|
||||
BF08858522DE7EC800DE9F1E /* UpdateCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF08858422DE7EC800DE9F1E /* UpdateCollectionViewCell.swift */; };
|
||||
BF0C4EBD22A1BD8B009A2DD7 /* AppManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF0C4EBC22A1BD8B009A2DD7 /* AppManager.swift */; };
|
||||
BF0DCA662433BDF500E3A595 /* AnalyticsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF0DCA652433BDF500E3A595 /* AnalyticsManager.swift */; };
|
||||
BF0F5FC723F394AD0080DB64 /* AltStore3ToAltStore4.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = BF0F5FC623F394AD0080DB64 /* AltStore3ToAltStore4.xcmappingmodel */; };
|
||||
BF100C50232D7CD1006A8926 /* AltStoreToAltStore2.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = BF100C4F232D7CD1006A8926 /* AltStoreToAltStore2.xcmappingmodel */; };
|
||||
BF100C54232D7DAE006A8926 /* StoreAppPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF100C53232D7DAE006A8926 /* StoreAppPolicy.swift */; };
|
||||
@@ -122,6 +123,7 @@
|
||||
BF56D2AC23DF8E170006506D /* FetchAppIDsOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF56D2AB23DF8E170006506D /* FetchAppIDsOperation.swift */; };
|
||||
BF56D2AF23DF9E310006506D /* AppIDsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF56D2AE23DF9E310006506D /* AppIDsViewController.swift */; };
|
||||
BF5C5FCF237DF69100EDD0C6 /* ALTPluginService.m in Sources */ = {isa = PBXBuildFile; fileRef = BF5C5FCE237DF69100EDD0C6 /* ALTPluginService.m */; };
|
||||
BF663C4F2433ED8200DAA738 /* FileManager+DirectorySize.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF663C4E2433ED8200DAA738 /* FileManager+DirectorySize.swift */; };
|
||||
BF6C336224197D700034FD24 /* NSError+LocalizedFailure.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF6C336124197D700034FD24 /* NSError+LocalizedFailure.swift */; };
|
||||
BF6C33652419AE310034FD24 /* AltStore4ToAltStore5.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = BF6C33642419AE310034FD24 /* AltStore4ToAltStore5.xcmappingmodel */; };
|
||||
BF6C8FAC242935ED00125131 /* NSAttributedString+Markdown.m in Sources */ = {isa = PBXBuildFile; fileRef = BF6C8FAA242935ED00125131 /* NSAttributedString+Markdown.m */; };
|
||||
@@ -323,6 +325,7 @@
|
||||
BF08858222DE795100DE9F1E /* MyAppsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyAppsViewController.swift; sourceTree = "<group>"; };
|
||||
BF08858422DE7EC800DE9F1E /* UpdateCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UpdateCollectionViewCell.swift; sourceTree = "<group>"; };
|
||||
BF0C4EBC22A1BD8B009A2DD7 /* AppManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppManager.swift; sourceTree = "<group>"; };
|
||||
BF0DCA652433BDF500E3A595 /* AnalyticsManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalyticsManager.swift; sourceTree = "<group>"; };
|
||||
BF0F5FC623F394AD0080DB64 /* AltStore3ToAltStore4.xcmappingmodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcmappingmodel; path = AltStore3ToAltStore4.xcmappingmodel; sourceTree = "<group>"; };
|
||||
BF100C46232D7828006A8926 /* AltStore 2.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "AltStore 2.xcdatamodel"; sourceTree = "<group>"; };
|
||||
BF100C4F232D7CD1006A8926 /* AltStoreToAltStore2.xcmappingmodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcmappingmodel; path = AltStoreToAltStore2.xcmappingmodel; sourceTree = "<group>"; };
|
||||
@@ -442,6 +445,7 @@
|
||||
BF5C5FC7237DF5AE00EDD0C6 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
BF5C5FCD237DF69100EDD0C6 /* ALTPluginService.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ALTPluginService.h; sourceTree = "<group>"; };
|
||||
BF5C5FCE237DF69100EDD0C6 /* ALTPluginService.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ALTPluginService.m; sourceTree = "<group>"; };
|
||||
BF663C4E2433ED8200DAA738 /* FileManager+DirectorySize.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FileManager+DirectorySize.swift"; sourceTree = "<group>"; };
|
||||
BF6C336124197D700034FD24 /* NSError+LocalizedFailure.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSError+LocalizedFailure.swift"; sourceTree = "<group>"; };
|
||||
BF6C33632419ADEB0034FD24 /* AltStore 5.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "AltStore 5.xcdatamodel"; sourceTree = "<group>"; };
|
||||
BF6C33642419AE310034FD24 /* AltStore4ToAltStore5.xcmappingmodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcmappingmodel; path = AltStore4ToAltStore5.xcmappingmodel; sourceTree = "<group>"; };
|
||||
@@ -654,6 +658,14 @@
|
||||
path = Extensions;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
BF0DCA642433BDE200E3A595 /* Analytics */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
BF0DCA652433BDF500E3A595 /* AnalyticsManager.swift */,
|
||||
);
|
||||
path = Analytics;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
BF100C4E232D7C95006A8926 /* Migrations */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -1042,6 +1054,7 @@
|
||||
BF56D2AD23DF9E170006506D /* App IDs */,
|
||||
BFC84A4B2421A13000853474 /* Sources */,
|
||||
BFC51D7922972F1F00388324 /* Server */,
|
||||
BF0DCA642433BDE200E3A595 /* Analytics */,
|
||||
BFD247982284D7FC00981D42 /* Model */,
|
||||
BFDB6A0922AAEDA1007EA6D6 /* Operations */,
|
||||
BFD2478D2284C4C700981D42 /* Components */,
|
||||
@@ -1152,6 +1165,7 @@
|
||||
BFDB5B1522EE90D300F74113 /* Date+RelativeDate.swift */,
|
||||
BFF0B6992322D7D0007A79E1 /* UIScreen+CompactHeight.swift */,
|
||||
BF6C336124197D700034FD24 /* NSError+LocalizedFailure.swift */,
|
||||
BF663C4E2433ED8200DAA738 /* FileManager+DirectorySize.swift */,
|
||||
);
|
||||
path = Extensions;
|
||||
sourceTree = "<group>";
|
||||
@@ -1739,6 +1753,7 @@
|
||||
BFC57A652416C72400EB891E /* DeactivateAppOperation.swift in Sources */,
|
||||
BF3BEFC124086A1E00DE7D55 /* RefreshAppOperation.swift in Sources */,
|
||||
BFE60740231AFD2A002B0E8E /* InsetGroupTableViewCell.swift in Sources */,
|
||||
BF0DCA662433BDF500E3A595 /* AnalyticsManager.swift in Sources */,
|
||||
BFD5D6F4230DDB0A007955AB /* Campaign.swift in Sources */,
|
||||
BFB6B21B23186D640022A802 /* NewsItem.swift in Sources */,
|
||||
BFF0B6982322CAB8007A79E1 /* InstructionsViewController.swift in Sources */,
|
||||
@@ -1809,6 +1824,7 @@
|
||||
BF9ABA4D22DD16DE008935CF /* PillButton.swift in Sources */,
|
||||
BFE6326C22A86FF300F30809 /* AuthenticationOperation.swift in Sources */,
|
||||
BF6C8FB02429599900125131 /* TextCollectionReusableView.swift in Sources */,
|
||||
BF663C4F2433ED8200DAA738 /* FileManager+DirectorySize.swift in Sources */,
|
||||
BFB6B220231870B00022A802 /* NewsCollectionViewCell.swift in Sources */,
|
||||
BFDB6A0522A9AFB2007EA6D6 /* Fetchable.swift in Sources */,
|
||||
BFB3645A2325985F00CD0EB1 /* FindServerOperation.swift in Sources */,
|
||||
@@ -2180,7 +2196,7 @@
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
|
||||
97
AltStore/Analytics/AnalyticsManager.swift
Normal file
97
AltStore/Analytics/AnalyticsManager.swift
Normal file
@@ -0,0 +1,97 @@
|
||||
//
|
||||
// AnalyticsManager.swift
|
||||
// AltStore
|
||||
//
|
||||
// Created by Riley Testut on 3/31/20.
|
||||
// Copyright © 2020 Riley Testut. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
import AppCenter
|
||||
import AppCenterAnalytics
|
||||
import AppCenterCrashes
|
||||
|
||||
extension AnalyticsManager
|
||||
{
|
||||
enum EventProperty: String
|
||||
{
|
||||
case name
|
||||
case bundleIdentifier
|
||||
case developerName
|
||||
case version
|
||||
case size
|
||||
case tintColor
|
||||
case sourceIdentifier
|
||||
case sourceURL
|
||||
}
|
||||
|
||||
enum Event
|
||||
{
|
||||
case installedApp(InstalledApp)
|
||||
case updatedApp(InstalledApp)
|
||||
case refreshedApp(InstalledApp)
|
||||
|
||||
var name: String {
|
||||
switch self
|
||||
{
|
||||
case .installedApp: return "installed_app"
|
||||
case .updatedApp: return "updated_app"
|
||||
case .refreshedApp: return "refreshed_app"
|
||||
}
|
||||
}
|
||||
|
||||
var properties: [EventProperty: String] {
|
||||
let properties: [EventProperty: String?]
|
||||
|
||||
switch self
|
||||
{
|
||||
case .installedApp(let app), .updatedApp(let app), .refreshedApp(let app):
|
||||
let appBundleURL = InstalledApp.fileURL(for: app)
|
||||
let appBundleSize = FileManager.default.directorySize(at: appBundleURL)
|
||||
|
||||
properties = [
|
||||
.name: app.name,
|
||||
.bundleIdentifier: app.bundleIdentifier,
|
||||
.developerName: app.storeApp?.developerName,
|
||||
.version: app.version,
|
||||
.size: appBundleSize?.description,
|
||||
.tintColor: app.storeApp?.tintColor?.hexString,
|
||||
.sourceIdentifier: app.storeApp?.sourceIdentifier,
|
||||
.sourceURL: app.storeApp?.source?.sourceURL.absoluteString
|
||||
]
|
||||
}
|
||||
|
||||
return properties.compactMapValues { $0 }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class AnalyticsManager
|
||||
{
|
||||
static let shared = AnalyticsManager()
|
||||
|
||||
private init()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
extension AnalyticsManager
|
||||
{
|
||||
func start()
|
||||
{
|
||||
MSAppCenter.start("bb08e9bb-c126-408d-bf3f-324c8473fd40", withServices:[
|
||||
MSAnalytics.self,
|
||||
MSCrashes.self
|
||||
])
|
||||
}
|
||||
|
||||
func trackEvent(_ event: Event)
|
||||
{
|
||||
let properties = event.properties.reduce(into: [:]) { (properties, item) in
|
||||
properties[item.key.rawValue] = item.value
|
||||
}
|
||||
|
||||
MSAnalytics.trackEvent(event.name, withProperties: properties)
|
||||
}
|
||||
}
|
||||
@@ -68,6 +68,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
|
||||
|
||||
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool
|
||||
{
|
||||
AnalyticsManager.shared.start()
|
||||
|
||||
self.setTintColor()
|
||||
|
||||
ServerManager.shared.startDiscovering()
|
||||
|
||||
36
AltStore/Extensions/FileManager+DirectorySize.swift
Normal file
36
AltStore/Extensions/FileManager+DirectorySize.swift
Normal file
@@ -0,0 +1,36 @@
|
||||
//
|
||||
// FileManager+DirectorySize.swift
|
||||
// AltStore
|
||||
//
|
||||
// Created by Riley Testut on 3/31/20.
|
||||
// Copyright © 2020 Riley Testut. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
extension FileManager
|
||||
{
|
||||
func directorySize(at directoryURL: URL) -> Int?
|
||||
{
|
||||
guard let enumerator = FileManager.default.enumerator(at: directoryURL, includingPropertiesForKeys: [.fileSizeKey]) else { return nil }
|
||||
|
||||
var total: Int = 0
|
||||
|
||||
for case let fileURL as URL in enumerator
|
||||
{
|
||||
do
|
||||
{
|
||||
let resourceValues = try fileURL.resourceValues(forKeys: [.fileSizeKey])
|
||||
guard let fileSize = resourceValues.fileSize else { continue }
|
||||
|
||||
total += fileSize
|
||||
}
|
||||
catch
|
||||
{
|
||||
print("Failed to read file size for item: \(fileURL).", error)
|
||||
}
|
||||
}
|
||||
|
||||
return total
|
||||
}
|
||||
}
|
||||
@@ -10,6 +10,17 @@ import UIKit
|
||||
|
||||
extension UIColor
|
||||
{
|
||||
// Borrowed from https://stackoverflow.com/a/26341062
|
||||
var hexString: String {
|
||||
let components = self.cgColor.components
|
||||
let r: CGFloat = components?[0] ?? 0.0
|
||||
let g: CGFloat = components?[1] ?? 0.0
|
||||
let b: CGFloat = components?[2] ?? 0.0
|
||||
|
||||
let hexString = String.init(format: "%02lX%02lX%02lX", lroundf(Float(r * 255)), lroundf(Float(g * 255)), lroundf(Float(b * 255)))
|
||||
return hexString
|
||||
}
|
||||
|
||||
// Borrowed from https://stackoverflow.com/a/33397427
|
||||
convenience init?(hexString: String)
|
||||
{
|
||||
|
||||
@@ -269,6 +269,35 @@ extension AppManager
|
||||
return group.progress
|
||||
}
|
||||
|
||||
@discardableResult
|
||||
func update(_ app: InstalledApp, presentingViewController: UIViewController?, context: AuthenticatedOperationContext = AuthenticatedOperationContext(), completionHandler: @escaping (Result<InstalledApp, Error>) -> Void) -> Progress
|
||||
{
|
||||
guard let storeApp = app.storeApp else {
|
||||
completionHandler(.failure(OperationError.appNotFound))
|
||||
return Progress.discreteProgress(totalUnitCount: 1)
|
||||
}
|
||||
|
||||
let group = RefreshGroup(context: context)
|
||||
group.completionHandler = { (results) in
|
||||
do
|
||||
{
|
||||
guard let result = results.values.first else { throw OperationError.unknown }
|
||||
completionHandler(result)
|
||||
}
|
||||
catch
|
||||
{
|
||||
completionHandler(.failure(error))
|
||||
}
|
||||
}
|
||||
|
||||
let operation = AppOperation.update(storeApp)
|
||||
assert(operation.app as AnyObject === storeApp) // Make sure we never accidentally "update" to already installed app.
|
||||
|
||||
self.perform([operation], presentingViewController: presentingViewController, group: group)
|
||||
|
||||
return group.progress
|
||||
}
|
||||
|
||||
@discardableResult
|
||||
func refresh(_ installedApps: [InstalledApp], presentingViewController: UIViewController?, group: RefreshGroup? = nil) -> RefreshGroup
|
||||
{
|
||||
@@ -332,12 +361,13 @@ private extension AppManager
|
||||
enum AppOperation
|
||||
{
|
||||
case install(AppProtocol)
|
||||
case update(AppProtocol)
|
||||
case refresh(AppProtocol)
|
||||
|
||||
var app: AppProtocol {
|
||||
switch self
|
||||
{
|
||||
case .install(let app), .refresh(let app): return app
|
||||
case .install(let app), .update(let app), .refresh(let app): return app
|
||||
}
|
||||
}
|
||||
|
||||
@@ -404,16 +434,16 @@ private extension AppManager
|
||||
case .refresh(let installedApp as InstalledApp) where installedApp.certificateSerialNumber == group.context.certificate?.serialNumber:
|
||||
// Refreshing apps, but using same certificate as last time, so we can just refresh provisioning profiles.
|
||||
|
||||
let refreshProgress = self._refresh(installedApp, group: group) { (result) in
|
||||
let refreshProgress = self._refresh(installedApp, operation: operation, group: group) { (result) in
|
||||
self.finish(operation, result: result, group: group, progress: progress)
|
||||
}
|
||||
progress?.addChild(refreshProgress, withPendingUnitCount: 80)
|
||||
|
||||
case .refresh(let app), .install(let app):
|
||||
case .refresh(let app), .install(let app), .update(let app):
|
||||
// Either installing for first time, or refreshing with a different signing certificate,
|
||||
// so we need to resign the app then install it.
|
||||
|
||||
let installProgress = self._install(app, group: group) { (result) in
|
||||
let installProgress = self._install(app, operation: operation, group: group) { (result) in
|
||||
self.finish(operation, result: result, group: group, progress: progress)
|
||||
}
|
||||
progress?.addChild(installProgress, withPendingUnitCount: 80)
|
||||
@@ -444,13 +474,25 @@ private extension AppManager
|
||||
return group
|
||||
}
|
||||
|
||||
|
||||
private func _install(_ app: AppProtocol, group: RefreshGroup, completionHandler: @escaping (Result<InstalledApp, Error>) -> Void) -> Progress
|
||||
private func _install(_ app: AppProtocol, operation: AppOperation, group: RefreshGroup, completionHandler: @escaping (Result<InstalledApp, Error>) -> Void) -> Progress
|
||||
{
|
||||
let progress = Progress.discreteProgress(totalUnitCount: 100)
|
||||
|
||||
let context = InstallAppOperationContext(bundleIdentifier: app.bundleIdentifier, authenticatedContext: group.context)
|
||||
context.beginInstallationHandler = group.beginInstallationHandler
|
||||
context.beginInstallationHandler = { (installedApp) in
|
||||
switch operation
|
||||
{
|
||||
case .update where installedApp.bundleIdentifier == StoreApp.altstoreAppID:
|
||||
// AltStore will quit before installation finishes,
|
||||
// so assume if we get this far the update will finish successfully.
|
||||
let event = AnalyticsManager.Event.updatedApp(installedApp)
|
||||
AnalyticsManager.shared.trackEvent(event)
|
||||
|
||||
default: break
|
||||
}
|
||||
|
||||
group.beginInstallationHandler?(installedApp)
|
||||
}
|
||||
|
||||
/* Download */
|
||||
let downloadOperation = DownloadAppOperation(app: app, context: context)
|
||||
@@ -546,7 +588,7 @@ private extension AppManager
|
||||
return progress
|
||||
}
|
||||
|
||||
private func _refresh(_ app: InstalledApp, group: RefreshGroup, completionHandler: @escaping (Result<InstalledApp, Error>) -> Void) -> Progress
|
||||
private func _refresh(_ app: InstalledApp, operation: AppOperation, group: RefreshGroup, completionHandler: @escaping (Result<InstalledApp, Error>) -> Void) -> Progress
|
||||
{
|
||||
let progress = Progress.discreteProgress(totalUnitCount: 100)
|
||||
|
||||
@@ -575,7 +617,7 @@ private extension AppManager
|
||||
case .failure(ALTServerError.unknownRequest):
|
||||
// Fall back to installation if AltServer doesn't support newer provisioning profile requests.
|
||||
app.managedObjectContext?.performAndWait { // Must performAndWait to ensure we add operations before we return.
|
||||
let installProgress = self._install(app, group: group) { (result) in
|
||||
let installProgress = self._install(app, operation: operation, group: group) { (result) in
|
||||
completionHandler(result)
|
||||
}
|
||||
progress.addChild(installProgress, withPendingUnitCount: 40)
|
||||
@@ -635,6 +677,26 @@ private extension AppManager
|
||||
self.scheduleExpirationWarningLocalNotification(for: installedApp)
|
||||
}
|
||||
|
||||
let event: AnalyticsManager.Event?
|
||||
|
||||
switch operation
|
||||
{
|
||||
case .install: event = .installedApp(installedApp)
|
||||
case .refresh: event = .refreshedApp(installedApp)
|
||||
case .update where installedApp.bundleIdentifier == StoreApp.altstoreAppID:
|
||||
// AltStore quits before update finishes, so we've preemptively logged this update event.
|
||||
// In case AltStore doesn't quit, such as when update has a different bundle identifier,
|
||||
// make sure we don't log this update event a second time.
|
||||
event = nil
|
||||
|
||||
case .update: event = .updatedApp(installedApp)
|
||||
}
|
||||
|
||||
if let event = event
|
||||
{
|
||||
AnalyticsManager.shared.trackEvent(event)
|
||||
}
|
||||
|
||||
do { try installedApp.managedObjectContext?.save() }
|
||||
catch { print("Error saving installed app.", error) }
|
||||
}
|
||||
@@ -693,7 +755,7 @@ private extension AppManager
|
||||
{
|
||||
switch operation
|
||||
{
|
||||
case .install: return self.installationProgress[operation.bundleIdentifier]
|
||||
case .install, .update: return self.installationProgress[operation.bundleIdentifier]
|
||||
case .refresh: return self.refreshProgress[operation.bundleIdentifier]
|
||||
}
|
||||
}
|
||||
@@ -702,7 +764,7 @@ private extension AppManager
|
||||
{
|
||||
switch operation
|
||||
{
|
||||
case .install: self.installationProgress[operation.bundleIdentifier] = progress
|
||||
case .install, .update: self.installationProgress[operation.bundleIdentifier] = progress
|
||||
case .refresh: self.refreshProgress[operation.bundleIdentifier] = progress
|
||||
}
|
||||
}
|
||||
|
||||
@@ -640,15 +640,15 @@ private extension MyAppsViewController
|
||||
let point = self.collectionView.convert(sender.center, from: sender.superview)
|
||||
guard let indexPath = self.collectionView.indexPathForItem(at: point) else { return }
|
||||
|
||||
guard let storeApp = self.dataSource.item(at: indexPath).storeApp else { return }
|
||||
let installedApp = self.dataSource.item(at: indexPath)
|
||||
|
||||
let previousProgress = AppManager.shared.installationProgress(for: storeApp)
|
||||
let previousProgress = AppManager.shared.installationProgress(for: installedApp)
|
||||
guard previousProgress == nil else {
|
||||
previousProgress?.cancel()
|
||||
return
|
||||
}
|
||||
|
||||
_ = AppManager.shared.install(storeApp, presentingViewController: self) { (result) in
|
||||
_ = AppManager.shared.update(installedApp, presentingViewController: self) { (result) in
|
||||
DispatchQueue.main.async {
|
||||
switch result
|
||||
{
|
||||
@@ -662,7 +662,7 @@ private extension MyAppsViewController
|
||||
self.collectionView.reloadItems(at: [indexPath])
|
||||
|
||||
case .success:
|
||||
print("Updated app:", storeApp.bundleIdentifier)
|
||||
print("Updated app:", installedApp.bundleIdentifier)
|
||||
// No need to reload, since the the update cell is gone now.
|
||||
}
|
||||
|
||||
|
||||
1
Podfile
1
Podfile
@@ -8,6 +8,7 @@ target 'AltStore' do
|
||||
# Pods for AltStore
|
||||
pod 'KeychainAccess', '~> 3.2.0'
|
||||
pod 'Nuke', '~> 7.0'
|
||||
pod 'AppCenter', '~> 3.1.0'
|
||||
pod 'AltSign', :path => 'Dependencies/AltSign'
|
||||
pod 'Roxas', :path => 'Dependencies/Roxas'
|
||||
|
||||
|
||||
13
Podfile.lock
13
Podfile.lock
@@ -10,6 +10,14 @@ PODS:
|
||||
- AltSign/minizip (0.1)
|
||||
- AltSign/OpenSSL (0.1)
|
||||
- AltSign/plist (0.1)
|
||||
- AppCenter (3.1.0):
|
||||
- AppCenter/Analytics (= 3.1.0)
|
||||
- AppCenter/Crashes (= 3.1.0)
|
||||
- AppCenter/Analytics (3.1.0):
|
||||
- AppCenter/Core
|
||||
- AppCenter/Core (3.1.0)
|
||||
- AppCenter/Crashes (3.1.0):
|
||||
- AppCenter/Core
|
||||
- KeychainAccess (3.2.0)
|
||||
- Nuke (7.6.3)
|
||||
- Roxas (0.1)
|
||||
@@ -18,6 +26,7 @@ PODS:
|
||||
|
||||
DEPENDENCIES:
|
||||
- AltSign (from `Dependencies/AltSign`)
|
||||
- AppCenter (~> 3.1.0)
|
||||
- KeychainAccess (~> 3.2.0)
|
||||
- Nuke (~> 7.0)
|
||||
- Roxas (from `Dependencies/Roxas`)
|
||||
@@ -26,6 +35,7 @@ DEPENDENCIES:
|
||||
|
||||
SPEC REPOS:
|
||||
trunk:
|
||||
- AppCenter
|
||||
- KeychainAccess
|
||||
- Nuke
|
||||
- Sparkle
|
||||
@@ -45,12 +55,13 @@ CHECKOUT OPTIONS:
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
AltSign: c3693fa5a4b6d0ec6bedb74a5d768fe58bd67b87
|
||||
AppCenter: a1c30c47b7882a04a615ffa5ab26c007326436d8
|
||||
KeychainAccess: 3b1bf8a77eb4c6ea1ce9404c292e48f948954c6b
|
||||
Nuke: 44130e95e09463f8773ae4b96b90de1eba6b3350
|
||||
Roxas: 1990039f843f5dc284918dc82375feb80020ef62
|
||||
Sparkle: 3f75576db8b0265adef36c43249d747f22d0b708
|
||||
STPrivilegedTask: 56c3397238a1ec07720fb877a044898373cd2c68
|
||||
|
||||
PODFILE CHECKSUM: 1503b17048964bd0586d5470e6ee1e57917934de
|
||||
PODFILE CHECKSUM: 1317f1da77af3fbb8c90b0d34845d2f0068d488c
|
||||
|
||||
COCOAPODS: 1.8.4
|
||||
|
||||
BIN
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/AppCenter
generated
Normal file
BIN
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/AppCenter
generated
Normal file
Binary file not shown.
21
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/Headers/AppCenter.h
generated
Normal file
21
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/Headers/AppCenter.h
generated
Normal file
@@ -0,0 +1,21 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#import "MSAbstractLog.h"
|
||||
#import "MSAppCenter.h"
|
||||
#import "MSAppCenterErrors.h"
|
||||
#import "MSChannelGroupProtocol.h"
|
||||
#import "MSChannelProtocol.h"
|
||||
#import "MSConstants.h"
|
||||
#import "MSCustomProperties.h"
|
||||
#import "MSDevice.h"
|
||||
#import "MSEnable.h"
|
||||
#import "MSLog.h"
|
||||
#import "MSLogWithProperties.h"
|
||||
#import "MSLogger.h"
|
||||
#import "MSService.h"
|
||||
#import "MSServiceAbstract.h"
|
||||
#import "MSWrapperLogger.h"
|
||||
#import "MSWrapperSdk.h"
|
||||
13
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/Headers/MSAbstractLog.h
generated
Normal file
13
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/Headers/MSAbstractLog.h
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#ifndef MS_ABSTRACT_LOG_H
|
||||
#define MS_ABSTRACT_LOG_H
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface MSAbstractLog : NSObject
|
||||
|
||||
@end
|
||||
|
||||
#endif
|
||||
223
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/Headers/MSAppCenter.h
generated
Normal file
223
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/Headers/MSAppCenter.h
generated
Normal file
@@ -0,0 +1,223 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#import "MSConstants.h"
|
||||
|
||||
@class MSWrapperSdk;
|
||||
|
||||
#if !TARGET_OS_TV
|
||||
@class MSCustomProperties;
|
||||
#endif
|
||||
|
||||
@interface MSAppCenter : NSObject
|
||||
|
||||
/**
|
||||
* Returns the singleton instance of MSAppCenter.
|
||||
*/
|
||||
+ (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;
|
||||
|
||||
/**
|
||||
* 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;
|
||||
|
||||
/**
|
||||
* 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;
|
||||
|
||||
/**
|
||||
* 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;
|
||||
|
||||
/**
|
||||
* Check whether the SDK has already been configured or not.
|
||||
*
|
||||
* @return YES if configured, NO otherwise.
|
||||
*/
|
||||
+ (BOOL)isConfigured;
|
||||
|
||||
/**
|
||||
* Check whether app is running in App Center Test Cloud.
|
||||
*
|
||||
* @return true if running in App Center Test Cloud, false otherwise.
|
||||
*/
|
||||
+ (BOOL)isRunningInAppCenterTestCloud;
|
||||
|
||||
/**
|
||||
* Change the base URL (schema + authority + port only) used to communicate with the backend.
|
||||
*
|
||||
* @param logUrl Base URL to use for backend communication.
|
||||
*/
|
||||
+ (void)setLogUrl:(NSString *)logUrl;
|
||||
|
||||
/**
|
||||
* Enable or disable the SDK as a whole. In addition to AppCenter resources, it will also enable or disable all registered services.
|
||||
* The state is persisted in the device's storage across application launches.
|
||||
*
|
||||
* @param isEnabled YES to enable, NO to disable.
|
||||
*
|
||||
* @see isEnabled
|
||||
*/
|
||||
+ (void)setEnabled:(BOOL)isEnabled;
|
||||
|
||||
/**
|
||||
* Check whether the SDK is enabled or not as a whole.
|
||||
*
|
||||
* @return YES if enabled, NO otherwise.
|
||||
*
|
||||
* @see setEnabled:
|
||||
*/
|
||||
+ (BOOL)isEnabled;
|
||||
|
||||
/**
|
||||
* Get log level.
|
||||
*
|
||||
* @return Log level.
|
||||
*/
|
||||
+ (MSLogLevel)logLevel;
|
||||
|
||||
/**
|
||||
* Set log level.
|
||||
*
|
||||
* @param logLevel The log level.
|
||||
*/
|
||||
+ (void)setLogLevel:(MSLogLevel)logLevel;
|
||||
|
||||
/**
|
||||
* Set log level handler.
|
||||
*
|
||||
* @param logHandler Handler.
|
||||
*/
|
||||
+ (void)setLogHandler:(MSLogHandler)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.
|
||||
*
|
||||
* @param wrapperSdk Wrapper SDK information.
|
||||
*/
|
||||
+ (void)setWrapperSdk:(MSWrapperSdk *)wrapperSdk;
|
||||
|
||||
#if !TARGET_OS_TV
|
||||
/**
|
||||
* Set the custom properties.
|
||||
*
|
||||
* @param customProperties Custom properties object.
|
||||
*/
|
||||
+ (void)setCustomProperties:(MSCustomProperties *)customProperties;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Check whether the application delegate forwarder is enabled or not.
|
||||
*
|
||||
* @return YES if enabled, NO otherwise.
|
||||
*
|
||||
* @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.
|
||||
*/
|
||||
+ (BOOL)isAppDelegateForwarderEnabled;
|
||||
|
||||
/**
|
||||
* Get unique installation identifier.
|
||||
*
|
||||
* @return Unique installation identifier.
|
||||
*/
|
||||
+ (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!
|
||||
*
|
||||
* @return BOOL if the debugger is attached.
|
||||
*/
|
||||
+ (BOOL)isDebuggerAttached;
|
||||
|
||||
/**
|
||||
* Get the current version of AppCenter SDK.
|
||||
*
|
||||
* @return The current version of AppCenter SDK.
|
||||
*/
|
||||
+ (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.
|
||||
*
|
||||
* @param userId User identifier.
|
||||
*
|
||||
* @discussion Set the user identifier for logs sent for the default target token when the secret passed in @c
|
||||
* MSAppCenter: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.
|
||||
*/
|
||||
+ (void)setUserId:(NSString *)userId;
|
||||
|
||||
/**
|
||||
* Set country code to use when building device properties.
|
||||
*
|
||||
* @param countryCode The two-letter ISO country code. @see https://www.iso.org/obp/ui/#search for more information.
|
||||
*/
|
||||
+ (void)setCountryCode:(NSString *)countryCode;
|
||||
|
||||
@end
|
||||
41
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/Headers/MSAppCenterErrors.h
generated
Normal file
41
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/Headers/MSAppCenterErrors.h
generated
Normal file
@@ -0,0 +1,41 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#ifndef MS_APP_CENTER_ERRORS_H
|
||||
#define MS_APP_CENTER_ERRORS_H
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#define MS_APP_CENTER_BASE_DOMAIN @"com.Microsoft.AppCenter."
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
#pragma mark - Domain
|
||||
|
||||
static NSString *const kMSACErrorDomain = MS_APP_CENTER_BASE_DOMAIN @"ErrorDomain";
|
||||
|
||||
#pragma mark - General
|
||||
|
||||
// Error codes.
|
||||
NS_ENUM(NSInteger){MSACLogInvalidContainerErrorCode = 1, MSACCanceledErrorCode = 2, MSACDisabledErrorCode = 3};
|
||||
|
||||
// Error descriptions.
|
||||
static NSString const *kMSACLogInvalidContainerErrorDesc = @"Invalid log container.";
|
||||
static NSString const *kMSACCanceledErrorDesc = @"The operation was canceled.";
|
||||
static NSString const *kMSACDisabledErrorDesc = @"The service is disabled.";
|
||||
|
||||
#pragma mark - Connection
|
||||
|
||||
// Error codes.
|
||||
NS_ENUM(NSInteger){MSACConnectionPausedErrorCode = 100, MSACConnectionHttpErrorCode = 101};
|
||||
|
||||
// Error descriptions.
|
||||
static NSString const *kMSACConnectionHttpErrorDesc = @"An HTTP error occured.";
|
||||
static NSString const *kMSACConnectionPausedErrorDesc = @"Canceled, connection paused with log deletion.";
|
||||
|
||||
// Error user info keys.
|
||||
static NSString const *kMSACConnectionHttpCodeErrorKey = @"MSACConnectionHttpCode";
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
||||
#endif
|
||||
83
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/Headers/MSChannelGroupProtocol.h
generated
Normal file
83
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/Headers/MSChannelGroupProtocol.h
generated
Normal file
@@ -0,0 +1,83 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#ifndef MS_CHANNEL_GROUP_PROTOCOL_H
|
||||
#define MS_CHANNEL_GROUP_PROTOCOL_H
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#import "MSChannelProtocol.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@class MSChannelUnitConfiguration;
|
||||
|
||||
@protocol MSIngestionProtocol;
|
||||
@protocol MSChannelUnitProtocol;
|
||||
|
||||
/**
|
||||
* `MSChannelGroupProtocol` represents a kind of channel that contains constituent MSChannelUnit objects. When an operation from the
|
||||
* `MSChannelProtocol` is performed on the group, that operation should be propagated to its constituent MSChannelUnit objects.
|
||||
*/
|
||||
@protocol MSChannelGroupProtocol <MSChannelProtocol>
|
||||
|
||||
/**
|
||||
* Initialize a channel unit with the given configuration.
|
||||
*
|
||||
* @param configuration channel configuration.
|
||||
*
|
||||
* @return The added `MSChannelUnitProtocol`. Use this object to enqueue logs.
|
||||
*/
|
||||
- (id<MSChannelUnitProtocol>)addChannelUnitWithConfiguration:(MSChannelUnitConfiguration *)configuration;
|
||||
|
||||
/**
|
||||
* Initialize a channel unit with the given configuration.
|
||||
*
|
||||
* @param configuration channel configuration.
|
||||
* @param ingestion The alternative ingestion object
|
||||
*
|
||||
* @return The added `MSChannelUnitProtocol`. Use this object to enqueue logs.
|
||||
*/
|
||||
- (id<MSChannelUnitProtocol>)addChannelUnitWithConfiguration:(MSChannelUnitConfiguration *)configuration
|
||||
withIngestion:(nullable id<MSIngestionProtocol>)ingestion;
|
||||
|
||||
/**
|
||||
* Change the base URL (schema + authority + port only) used to communicate with the backend.
|
||||
*
|
||||
* @param logUrl base URL to use for backend communication.
|
||||
*/
|
||||
- (void)setLogUrl:(NSString *)logUrl;
|
||||
|
||||
/**
|
||||
* Set the app secret.
|
||||
*
|
||||
* @param appSecret The app secret.
|
||||
*/
|
||||
- (void)setAppSecret:(NSString *)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;
|
||||
|
||||
/**
|
||||
* 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`.
|
||||
*/
|
||||
- (id<MSChannelUnitProtocol>)channelUnitForGroupId:(NSString *)groupId;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
||||
#endif
|
||||
63
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/Headers/MSChannelProtocol.h
generated
Normal file
63
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/Headers/MSChannelProtocol.h
generated
Normal file
@@ -0,0 +1,63 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#ifndef MS_CHANNEL_PROTOCOL_H
|
||||
#define MS_CHANNEL_PROTOCOL_H
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#import "MSEnable.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@protocol MSChannelDelegate;
|
||||
|
||||
/**
|
||||
* `MSChannelProtocol` 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.
|
||||
*/
|
||||
@protocol MSChannelProtocol <NSObject, MSEnable>
|
||||
|
||||
/**
|
||||
* Add delegate.
|
||||
*
|
||||
* @param delegate delegate.
|
||||
*/
|
||||
- (void)addDelegate:(id<MSChannelDelegate>)delegate;
|
||||
|
||||
/**
|
||||
* Remove delegate.
|
||||
*
|
||||
* @param delegate delegate.
|
||||
*/
|
||||
- (void)removeDelegate:(id<MSChannelDelegate>)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
|
||||
170
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/Headers/MSConstants.h
generated
Normal file
170
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/Headers/MSConstants.h
generated
Normal file
@@ -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, MSLogLevel) {
|
||||
|
||||
/**
|
||||
* Logging will be very chatty
|
||||
*/
|
||||
MSLogLevelVerbose = 2,
|
||||
|
||||
/**
|
||||
* Debug information will be logged
|
||||
*/
|
||||
MSLogLevelDebug = 3,
|
||||
|
||||
/**
|
||||
* Information will be logged
|
||||
*/
|
||||
MSLogLevelInfo = 4,
|
||||
|
||||
/**
|
||||
* Errors and warnings will be logged
|
||||
*/
|
||||
MSLogLevelWarning = 5,
|
||||
|
||||
/**
|
||||
* Errors will be logged
|
||||
*/
|
||||
MSLogLevelError = 6,
|
||||
|
||||
/**
|
||||
* Only critical errors will be logged
|
||||
*/
|
||||
MSLogLevelAssert = 7,
|
||||
|
||||
/**
|
||||
* Logging is disabled
|
||||
*/
|
||||
MSLogLevelNone = 99
|
||||
};
|
||||
|
||||
typedef NSString * (^MSLogMessageProvider)(void);
|
||||
typedef void (^MSLogHandler)(MSLogMessageProvider messageProvider, MSLogLevel logLevel, NSString *tag, const char *file,
|
||||
const char *function, uint line);
|
||||
|
||||
/**
|
||||
* Channel priorities, check the kMSPriorityCount if you add a new value.
|
||||
* The order matters here! Values NEED to range from low priority to high priority.
|
||||
*/
|
||||
typedef NS_ENUM(NSInteger, MSPriority) { MSPriorityBackground, MSPriorityDefault, MSPriorityHigh };
|
||||
static short const kMSPriorityCount = MSPriorityHigh + 1;
|
||||
|
||||
/**
|
||||
* The priority by which the modules are initialized.
|
||||
* MSPriorityMax 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, MSInitializationPriority) {
|
||||
MSInitializationPriorityDefault = 500,
|
||||
MSInitializationPriorityHigh = 750,
|
||||
MSInitializationPriorityMax = 999
|
||||
};
|
||||
|
||||
/**
|
||||
* Enum with the different HTTP status codes.
|
||||
*/
|
||||
typedef NS_ENUM(NSInteger, MSHTTPCodesNo) {
|
||||
|
||||
// Invalid
|
||||
MSHTTPCodesNo0XXInvalidUnknown = 0,
|
||||
|
||||
// Informational
|
||||
MSHTTPCodesNo1XXInformationalUnknown = 1,
|
||||
MSHTTPCodesNo100Continue = 100,
|
||||
MSHTTPCodesNo101SwitchingProtocols = 101,
|
||||
MSHTTPCodesNo102Processing = 102,
|
||||
|
||||
// Success
|
||||
MSHTTPCodesNo2XXSuccessUnknown = 2,
|
||||
MSHTTPCodesNo200OK = 200,
|
||||
MSHTTPCodesNo201Created = 201,
|
||||
MSHTTPCodesNo202Accepted = 202,
|
||||
MSHTTPCodesNo203NonAuthoritativeInformation = 203,
|
||||
MSHTTPCodesNo204NoContent = 204,
|
||||
MSHTTPCodesNo205ResetContent = 205,
|
||||
MSHTTPCodesNo206PartialContent = 206,
|
||||
MSHTTPCodesNo207MultiStatus = 207,
|
||||
MSHTTPCodesNo208AlreadyReported = 208,
|
||||
MSHTTPCodesNo209IMUsed = 209,
|
||||
|
||||
// Redirection
|
||||
MSHTTPCodesNo3XXSuccessUnknown = 3,
|
||||
MSHTTPCodesNo300MultipleChoices = 300,
|
||||
MSHTTPCodesNo301MovedPermanently = 301,
|
||||
MSHTTPCodesNo302Found = 302,
|
||||
MSHTTPCodesNo303SeeOther = 303,
|
||||
MSHTTPCodesNo304NotModified = 304,
|
||||
MSHTTPCodesNo305UseProxy = 305,
|
||||
MSHTTPCodesNo306SwitchProxy = 306,
|
||||
MSHTTPCodesNo307TemporaryRedirect = 307,
|
||||
MSHTTPCodesNo308PermanentRedirect = 308,
|
||||
|
||||
// Client error
|
||||
MSHTTPCodesNo4XXSuccessUnknown = 4,
|
||||
MSHTTPCodesNo400BadRequest = 400,
|
||||
MSHTTPCodesNo401Unauthorised = 401,
|
||||
MSHTTPCodesNo402PaymentRequired = 402,
|
||||
MSHTTPCodesNo403Forbidden = 403,
|
||||
MSHTTPCodesNo404NotFound = 404,
|
||||
MSHTTPCodesNo405MethodNotAllowed = 405,
|
||||
MSHTTPCodesNo406NotAcceptable = 406,
|
||||
MSHTTPCodesNo407ProxyAuthenticationRequired = 407,
|
||||
MSHTTPCodesNo408RequestTimeout = 408,
|
||||
MSHTTPCodesNo409Conflict = 409,
|
||||
MSHTTPCodesNo410Gone = 410,
|
||||
MSHTTPCodesNo411LengthRequired = 411,
|
||||
MSHTTPCodesNo412PreconditionFailed = 412,
|
||||
MSHTTPCodesNo413RequestEntityTooLarge = 413,
|
||||
MSHTTPCodesNo414RequestURITooLong = 414,
|
||||
MSHTTPCodesNo415UnsupportedMediaType = 415,
|
||||
MSHTTPCodesNo416RequestedRangeNotSatisfiable = 416,
|
||||
MSHTTPCodesNo417ExpectationFailed = 417,
|
||||
MSHTTPCodesNo418IamATeapot = 418,
|
||||
MSHTTPCodesNo419AuthenticationTimeout = 419,
|
||||
MSHTTPCodesNo420MethodFailureSpringFramework = 420,
|
||||
MSHTTPCodesNo420EnhanceYourCalmTwitter = 4200,
|
||||
MSHTTPCodesNo422UnprocessableEntity = 422,
|
||||
MSHTTPCodesNo423Locked = 423,
|
||||
MSHTTPCodesNo424FailedDependency = 424,
|
||||
MSHTTPCodesNo424MethodFailureWebDaw = 4240,
|
||||
MSHTTPCodesNo425UnorderedCollection = 425,
|
||||
MSHTTPCodesNo426UpgradeRequired = 426,
|
||||
MSHTTPCodesNo428PreconditionRequired = 428,
|
||||
MSHTTPCodesNo429TooManyRequests = 429,
|
||||
MSHTTPCodesNo431RequestHeaderFieldsTooLarge = 431,
|
||||
MSHTTPCodesNo444NoResponseNginx = 444,
|
||||
MSHTTPCodesNo449RetryWithMicrosoft = 449,
|
||||
MSHTTPCodesNo450BlockedByWindowsParentalControls = 450,
|
||||
MSHTTPCodesNo451RedirectMicrosoft = 451,
|
||||
MSHTTPCodesNo451UnavailableForLegalReasons = 4510,
|
||||
MSHTTPCodesNo494RequestHeaderTooLargeNginx = 494,
|
||||
MSHTTPCodesNo495CertErrorNginx = 495,
|
||||
MSHTTPCodesNo496NoCertNginx = 496,
|
||||
MSHTTPCodesNo497HTTPToHTTPSNginx = 497,
|
||||
MSHTTPCodesNo499ClientClosedRequestNginx = 499,
|
||||
|
||||
// Server error
|
||||
MSHTTPCodesNo5XXSuccessUnknown = 5,
|
||||
MSHTTPCodesNo500InternalServerError = 500,
|
||||
MSHTTPCodesNo501NotImplemented = 501,
|
||||
MSHTTPCodesNo502BadGateway = 502,
|
||||
MSHTTPCodesNo503ServiceUnavailable = 503,
|
||||
MSHTTPCodesNo504GatewayTimeout = 504,
|
||||
MSHTTPCodesNo505HTTPVersionNotSupported = 505,
|
||||
MSHTTPCodesNo506VariantAlsoNegotiates = 506,
|
||||
MSHTTPCodesNo507InsufficientStorage = 507,
|
||||
MSHTTPCodesNo508LoopDetected = 508,
|
||||
MSHTTPCodesNo509BandwidthLimitExceeded = 509,
|
||||
MSHTTPCodesNo510NotExtended = 510,
|
||||
MSHTTPCodesNo511NetworkAuthenticationRequired = 511,
|
||||
MSHTTPCodesNo522ConnectionTimedOut = 522,
|
||||
MSHTTPCodesNo598NetworkReadTimeoutErrorUnknown = 598,
|
||||
MSHTTPCodesNo599NetworkConnectTimeoutErrorUnknown = 599
|
||||
};
|
||||
70
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/Headers/MSCustomProperties.h
generated
Normal file
70
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/Headers/MSCustomProperties.h
generated
Normal file
@@ -0,0 +1,70 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#ifndef MS_CUSTOM_PROPERTIES_H
|
||||
#define MS_CUSTOM_PROPERTIES_H
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
/**
|
||||
* Custom properties builder.
|
||||
* Collects multiple properties to send in one log.
|
||||
*/
|
||||
@interface MSCustomProperties : 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;
|
||||
|
||||
/**
|
||||
* 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;
|
||||
|
||||
/**
|
||||
* 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;
|
||||
|
||||
/**
|
||||
* 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;
|
||||
|
||||
/**
|
||||
* Clear the property for the specified key.
|
||||
*
|
||||
* @param key Key whose mapping is to be cleared.
|
||||
*
|
||||
* @return This instance.
|
||||
*/
|
||||
- (instancetype)clearPropertyForKey:(NSString *)key;
|
||||
|
||||
@end
|
||||
|
||||
#endif
|
||||
96
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/Headers/MSDevice.h
generated
Normal file
96
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/Headers/MSDevice.h
generated
Normal file
@@ -0,0 +1,96 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#ifndef MS_DEVICE_H
|
||||
#define MS_DEVICE_H
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#import "MSWrapperSdk.h"
|
||||
|
||||
@interface MSDevice : MSWrapperSdk
|
||||
|
||||
/*
|
||||
* 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
|
||||
26
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/Headers/MSEnable.h
generated
Normal file
26
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/Headers/MSEnable.h
generated
Normal file
@@ -0,0 +1,26 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#ifndef MS_ENABLE_H
|
||||
#define MS_ENABLE_H
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
/**
|
||||
* Protocol to define an instance that can be enabled/disabled.
|
||||
*/
|
||||
@protocol MSEnable <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;
|
||||
|
||||
@end
|
||||
|
||||
#endif
|
||||
73
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/Headers/MSLog.h
generated
Normal file
73
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/Headers/MSLog.h
generated
Normal file
@@ -0,0 +1,73 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#ifndef MS_LOG_H
|
||||
#define MS_LOG_H
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@class MSDevice;
|
||||
|
||||
@protocol MSLog <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) MSDevice *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
|
||||
20
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/Headers/MSLogWithProperties.h
generated
Normal file
20
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/Headers/MSLogWithProperties.h
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#ifndef MS_LOG_WITH_PROPERTIES_H
|
||||
#define MS_LOG_WITH_PROPERTIES_H
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#import "MSAbstractLog.h"
|
||||
|
||||
@interface MSLogWithProperties : MSAbstractLog
|
||||
|
||||
/**
|
||||
* Additional key/value pair parameters. [optional]
|
||||
*/
|
||||
@property(nonatomic, strong) NSDictionary<NSString *, NSString *> *properties;
|
||||
|
||||
@end
|
||||
|
||||
#endif
|
||||
44
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/Headers/MSLogger.h
generated
Normal file
44
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/Headers/MSLogger.h
generated
Normal file
@@ -0,0 +1,44 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#import "MSConstants.h"
|
||||
|
||||
#define MSLog(_level, _tag, _message) \
|
||||
[MSLogger logMessage:_message level:_level tag:_tag file:__FILE__ function:__PRETTY_FUNCTION__ line:__LINE__]
|
||||
#define MSLogAssert(tag, format, ...) \
|
||||
MSLog(MSLogLevelAssert, tag, (^{ \
|
||||
return [NSString stringWithFormat:(format), ##__VA_ARGS__]; \
|
||||
}))
|
||||
#define MSLogError(tag, format, ...) \
|
||||
MSLog(MSLogLevelError, tag, (^{ \
|
||||
return [NSString stringWithFormat:(format), ##__VA_ARGS__]; \
|
||||
}))
|
||||
#define MSLogWarning(tag, format, ...) \
|
||||
MSLog(MSLogLevelWarning, tag, (^{ \
|
||||
return [NSString stringWithFormat:(format), ##__VA_ARGS__]; \
|
||||
}))
|
||||
#define MSLogInfo(tag, format, ...) \
|
||||
MSLog(MSLogLevelInfo, tag, (^{ \
|
||||
return [NSString stringWithFormat:(format), ##__VA_ARGS__]; \
|
||||
}))
|
||||
#define MSLogDebug(tag, format, ...) \
|
||||
MSLog(MSLogLevelDebug, tag, (^{ \
|
||||
return [NSString stringWithFormat:(format), ##__VA_ARGS__]; \
|
||||
}))
|
||||
#define MSLogVerbose(tag, format, ...) \
|
||||
MSLog(MSLogLevelVerbose, tag, (^{ \
|
||||
return [NSString stringWithFormat:(format), ##__VA_ARGS__]; \
|
||||
}))
|
||||
|
||||
@interface MSLogger : NSObject
|
||||
|
||||
+ (void)logMessage:(MSLogMessageProvider)messageProvider
|
||||
level:(MSLogLevel)loglevel
|
||||
tag:(NSString *)tag
|
||||
file:(const char *)file
|
||||
function:(const char *)function
|
||||
line:(uint)line;
|
||||
|
||||
@end
|
||||
35
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/Headers/MSService.h
generated
Normal file
35
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/Headers/MSService.h
generated
Normal file
@@ -0,0 +1,35 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#ifndef MS_SERVICE_H
|
||||
#define MS_SERVICE_H
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
/**
|
||||
* Protocol declaring service logic.
|
||||
*/
|
||||
@protocol MSService <NSObject>
|
||||
|
||||
/**
|
||||
* Enable or disable this service.
|
||||
* The state is persisted in the device's storage across application launches.
|
||||
*
|
||||
* @param isEnabled Whether this service is enabled or not.
|
||||
*
|
||||
* @see isEnabled
|
||||
*/
|
||||
+ (void)setEnabled:(BOOL)isEnabled;
|
||||
|
||||
/**
|
||||
* Indicates whether this service is enabled.
|
||||
*
|
||||
* @return `YES` if this service is enabled, `NO` if it is not.
|
||||
*
|
||||
* @see setEnabled:
|
||||
*/
|
||||
+ (BOOL)isEnabled;
|
||||
|
||||
@end
|
||||
|
||||
#endif
|
||||
55
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/Headers/MSServiceAbstract.h
generated
Normal file
55
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/Headers/MSServiceAbstract.h
generated
Normal file
@@ -0,0 +1,55 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#ifndef MS_SERVICE_ABSTRACT_H
|
||||
#define MS_SERVICE_ABSTRACT_H
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#import "MSService.h"
|
||||
|
||||
@protocol MSChannelGroupProtocol;
|
||||
|
||||
/**
|
||||
* Abstraction of services common logic.
|
||||
* This class is intended to be subclassed only not instantiated directly.
|
||||
*/
|
||||
@interface MSServiceAbstract : NSObject <MSService>
|
||||
|
||||
/**
|
||||
* The flag indicates whether the service is started from application or not.
|
||||
*/
|
||||
@property(nonatomic, assign) BOOL startedFromApplication;
|
||||
|
||||
/**
|
||||
* Start this service with a channel group. Also sets the flag that indicates that a service has been started.
|
||||
*
|
||||
* @param channelGroup channel group used to persist and send logs.
|
||||
* @param appSecret app secret for the SDK.
|
||||
* @param token default transmission target token for this service.
|
||||
* @param fromApplication indicates whether the service started from an application or not.
|
||||
*/
|
||||
- (void)startWithChannelGroup:(id<MSChannelGroupProtocol>)channelGroup
|
||||
appSecret:(NSString *)appSecret
|
||||
transmissionTargetToken:(NSString *)token
|
||||
fromApplication:(BOOL)fromApplication;
|
||||
|
||||
/**
|
||||
* Update configuration when the service requires to start again. This method should only be called if the service is started from libraries
|
||||
* and then is being started from an application.
|
||||
*
|
||||
* @param appSecret app secret for the SDK.
|
||||
* @param token default transmission target token for this service.
|
||||
*/
|
||||
- (void)updateConfigurationWithAppSecret:(NSString *)appSecret transmissionTargetToken:(NSString *)token;
|
||||
|
||||
/**
|
||||
* Checks if the service needs the application secret.
|
||||
*
|
||||
* @return `YES` if the application secret is required, `NO` otherwise.
|
||||
*/
|
||||
- (BOOL)isAppSecretRequired;
|
||||
|
||||
@end
|
||||
|
||||
#endif
|
||||
16
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/Headers/MSWrapperLogger.h
generated
Normal file
16
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/Headers/MSWrapperLogger.h
generated
Normal file
@@ -0,0 +1,16 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#import "MSConstants.h"
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*/
|
||||
@interface MSWrapperLogger : NSObject
|
||||
|
||||
+ (void)MSWrapperLog:(MSLogMessageProvider)message tag:(NSString *)tag level:(MSLogLevel)level;
|
||||
|
||||
@end
|
||||
59
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/Headers/MSWrapperSdk.h
generated
Normal file
59
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/Headers/MSWrapperSdk.h
generated
Normal file
@@ -0,0 +1,59 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#ifndef MS_WRAPPER_SDK_H
|
||||
#define MS_WRAPPER_SDK_H
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface MSWrapperSdk : 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
|
||||
BIN
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/Info.plist
generated
Normal file
BIN
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/Info.plist
generated
Normal file
Binary file not shown.
13
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/Modules/module.modulemap
generated
Normal file
13
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/Modules/module.modulemap
generated
Normal file
@@ -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"
|
||||
}
|
||||
110
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/PrivateHeaders/MSChannelDelegate.h
generated
Normal file
110
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/PrivateHeaders/MSChannelDelegate.h
generated
Normal file
@@ -0,0 +1,110 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#import "MSConstants+Flags.h"
|
||||
|
||||
@protocol MSChannelUnitProtocol;
|
||||
@protocol MSChannelGroupProtocol;
|
||||
@protocol MSChannelProtocol;
|
||||
@protocol MSLog;
|
||||
|
||||
@protocol MSChannelDelegate <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<MSChannelGroupProtocol>)channelGroup didAddChannelUnit:(id<MSChannelUnitProtocol>)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<MSChannelProtocol>)channel prepareLog:(id<MSLog>)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<MSChannelProtocol>)channel didPrepareLog:(id<MSLog>)log internalId:(NSString *)internalId flags:(MSFlags)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<MSChannelProtocol>)channel didCompleteEnqueueingLog:(id<MSLog>)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<MSChannelProtocol>)channel willSendLog:(id<MSLog>)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<MSChannelProtocol>)channel didSucceedSendingLog:(id<MSLog>)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<MSChannelProtocol>)channel didFailSendingLog:(id<MSLog>)log withError:(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<MSChannelProtocol>)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<MSChannelProtocol>)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<MSChannelProtocol>)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<MSChannelUnitProtocol>)channelUnit shouldFilterLog:(id<MSLog>)log;
|
||||
|
||||
@end
|
||||
13
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/PrivateHeaders/MSConstants+Flags.h
generated
Normal file
13
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenter.framework/PrivateHeaders/MSConstants+Flags.h
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
typedef NS_OPTIONS(NSUInteger, MSFlags) {
|
||||
MSFlagsNone = (0 << 0), // => 00000000
|
||||
MSFlagsNormal = (1 << 0), // => 00000001
|
||||
MSFlagsCritical = (1 << 1), // => 00000010
|
||||
MSFlagsPersistenceNormal DEPRECATED_MSG_ATTRIBUTE("please use MSFlagsNormal") = MSFlagsNormal,
|
||||
MSFlagsPersistenceCritical DEPRECATED_MSG_ATTRIBUTE("please use MSFlagsCritical") = MSFlagsCritical,
|
||||
MSFlagsDefault = MSFlagsNormal
|
||||
};
|
||||
BIN
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterAnalytics.framework/AppCenterAnalytics
generated
Normal file
BIN
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterAnalytics.framework/AppCenterAnalytics
generated
Normal file
Binary file not shown.
13
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterAnalytics.framework/Headers/AppCenterAnalytics.h
generated
Normal file
13
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterAnalytics.framework/Headers/AppCenterAnalytics.h
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#import "MSAbstractLog.h"
|
||||
#import "MSAnalytics.h"
|
||||
#import "MSAnalyticsTransmissionTarget.h"
|
||||
#import "MSAnalyticsAuthenticationProvider.h"
|
||||
#import "MSAnalyticsAuthenticationProviderDelegate.h"
|
||||
#import "MSConstants+Flags.h"
|
||||
#import "MSEventLog.h"
|
||||
#import "MSEventProperties.h"
|
||||
13
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterAnalytics.framework/Headers/MSAbstractLog.h
generated
Normal file
13
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterAnalytics.framework/Headers/MSAbstractLog.h
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#ifndef MS_ABSTRACT_LOG_H
|
||||
#define MS_ABSTRACT_LOG_H
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface MSAbstractLog : NSObject
|
||||
|
||||
@end
|
||||
|
||||
#endif
|
||||
213
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterAnalytics.framework/Headers/MSAnalytics.h
generated
Normal file
213
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterAnalytics.framework/Headers/MSAnalytics.h
generated
Normal file
@@ -0,0 +1,213 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#import "MSAnalyticsTransmissionTarget.h"
|
||||
#import "MSServiceAbstract.h"
|
||||
|
||||
@class MSEventProperties;
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/**
|
||||
* App Center analytics service.
|
||||
*/
|
||||
@interface MSAnalytics : MSServiceAbstract
|
||||
|
||||
/**
|
||||
* Track an event.
|
||||
*
|
||||
* @param eventName Event name. Cannot be `nil` or empty.
|
||||
*
|
||||
* @discussion Validation rules apply depending on the configured secret.
|
||||
*
|
||||
* For App Center, the name cannot be longer than 256 and is truncated otherwise.
|
||||
*
|
||||
* For One Collector, the name needs to match the `[a-zA-Z0-9]((\.(?!(\.|$)))|[_a-zA-Z0-9]){3,99}` regular expression.
|
||||
*/
|
||||
+ (void)trackEvent:(NSString *)eventName;
|
||||
|
||||
/**
|
||||
* Track a custom event with optional string properties.
|
||||
*
|
||||
* @param eventName Event name. Cannot be `nil` or empty.
|
||||
* @param properties Dictionary of properties. Keys and values must not be `nil`.
|
||||
*
|
||||
* @discussion Additional validation rules apply depending on the configured secret.
|
||||
*
|
||||
* For App Center:
|
||||
*
|
||||
* - The event name cannot be longer than 256 and is truncated otherwise.
|
||||
*
|
||||
* - The property names cannot be empty.
|
||||
*
|
||||
* - The property names and values are limited to 125 characters each (truncated).
|
||||
*
|
||||
* - The number of properties per event is limited to 20 (truncated).
|
||||
*
|
||||
*
|
||||
* For One Collector:
|
||||
*
|
||||
* - The event name needs to match the `[a-zA-Z0-9]((\.(?!(\.|$)))|[_a-zA-Z0-9]){3,99}` regular expression.
|
||||
*
|
||||
* - The `baseData` and `baseDataType` properties are reserved and thus discarded.
|
||||
*
|
||||
* - The full event size when encoded as a JSON string cannot be larger than 1.9MB.
|
||||
*/
|
||||
+ (void)trackEvent:(NSString *)eventName withProperties:(nullable NSDictionary<NSString *, NSString *> *)properties;
|
||||
|
||||
/**
|
||||
* Track a custom event with optional string properties.
|
||||
*
|
||||
* @param eventName Event name. Cannot be `nil` or empty.
|
||||
* @param properties Dictionary of properties. Keys and values must not be `nil`.
|
||||
* @param flags Optional flags. Events tracked with the MSFlagsCritical flag will take precedence over all other events in
|
||||
* storage. An event tracked with this option will only be dropped if storage must make room for a newer event that is also marked with the
|
||||
* MSFlagsCritical flag.
|
||||
*
|
||||
* @discussion Additional validation rules apply depending on the configured secret.
|
||||
*
|
||||
* For App Center:
|
||||
*
|
||||
* - The event name cannot be longer than 256 and is truncated otherwise.
|
||||
*
|
||||
* - The property names cannot be empty.
|
||||
*
|
||||
* - The property names and values are limited to 125 characters each (truncated).
|
||||
*
|
||||
* - The number of properties per event is limited to 20 (truncated).
|
||||
*
|
||||
*
|
||||
* For One Collector:
|
||||
*
|
||||
* - The event name needs to match the `[a-zA-Z0-9]((\.(?!(\.|$)))|[_a-zA-Z0-9]){3,99}` regular expression.
|
||||
*
|
||||
* - The `baseData` and `baseDataType` properties are reserved and thus discarded.
|
||||
*
|
||||
* - The full event size when encoded as a JSON string cannot be larger than 1.9MB.
|
||||
*/
|
||||
+ (void)trackEvent:(NSString *)eventName withProperties:(nullable NSDictionary<NSString *, NSString *> *)properties flags:(MSFlags)flags;
|
||||
|
||||
/**
|
||||
* Track a custom event with name and optional typed properties.
|
||||
*
|
||||
* @param eventName Event name.
|
||||
* @param properties Typed properties.
|
||||
*
|
||||
* @discussion The following validation rules are applied:
|
||||
*
|
||||
* The name cannot be null or empty.
|
||||
*
|
||||
* The property names or values cannot be null.
|
||||
*
|
||||
* Double values must be finite (NaN or Infinite values are discarded).
|
||||
*
|
||||
* Additional validation rules apply depending on the configured secret.
|
||||
*
|
||||
*
|
||||
* For App Center:
|
||||
*
|
||||
* - The event name cannot be longer than 256 and is truncated otherwise.
|
||||
*
|
||||
* - The property names cannot be empty.
|
||||
*
|
||||
* - The property names and values are limited to 125 characters each (truncated).
|
||||
*
|
||||
* - The number of properties per event is limited to 20 (truncated).
|
||||
*
|
||||
*
|
||||
* For One Collector:
|
||||
*
|
||||
* - The event name needs to match the `[a-zA-Z0-9]((\.(?!(\.|$)))|[_a-zA-Z0-9]){3,99}` regular expression.
|
||||
*
|
||||
* - The `baseData` and `baseDataType` properties are reserved and thus discarded.
|
||||
*
|
||||
* - The full event size when encoded as a JSON string cannot be larger than 1.9MB.
|
||||
*/
|
||||
+ (void)trackEvent:(NSString *)eventName
|
||||
withTypedProperties:(nullable MSEventProperties *)properties NS_SWIFT_NAME(trackEvent(_:withProperties:));
|
||||
|
||||
/**
|
||||
* Track a custom event with name and optional typed properties.
|
||||
*
|
||||
* @param eventName Event name.
|
||||
* @param properties Typed properties.
|
||||
* @param flags Optional flags. Events tracked with the MSFlagsCritical flag will take precedence over all other events in
|
||||
* storage. An event tracked with this option will only be dropped if storage must make room for a newer event that is also marked with the
|
||||
* MSFlagsCritical flag.
|
||||
*
|
||||
* @discussion The following validation rules are applied:
|
||||
*
|
||||
* The name cannot be null or empty.
|
||||
*
|
||||
* The property names or values cannot be null.
|
||||
*
|
||||
* Double values must be finite (NaN or Infinite values are discarded).
|
||||
*
|
||||
* Additional validation rules apply depending on the configured secret.
|
||||
*
|
||||
*
|
||||
* For App Center:
|
||||
*
|
||||
* - The event name cannot be longer than 256 and is truncated otherwise.
|
||||
*
|
||||
* - The property names cannot be empty.
|
||||
*
|
||||
* - The property names and values are limited to 125 characters each (truncated).
|
||||
*
|
||||
* - The number of properties per event is limited to 20 (truncated).
|
||||
*
|
||||
*
|
||||
* For One Collector:
|
||||
*
|
||||
* - The event name needs to match the `[a-zA-Z0-9]((\.(?!(\.|$)))|[_a-zA-Z0-9]){3,99}` regular expression.
|
||||
*
|
||||
* - The `baseData` and `baseDataType` properties are reserved and thus discarded.
|
||||
*
|
||||
* - The full event size when encoded as a JSON string cannot be larger than 1.9MB.
|
||||
*/
|
||||
+ (void)trackEvent:(NSString *)eventName
|
||||
withTypedProperties:(nullable MSEventProperties *)properties
|
||||
flags:(MSFlags)flags NS_SWIFT_NAME(trackEvent(_:withProperties:flags:));
|
||||
|
||||
/**
|
||||
* Pause transmission of Analytics logs. While paused, Analytics logs are saved to disk.
|
||||
*
|
||||
* @see resume
|
||||
*/
|
||||
+ (void)pause;
|
||||
|
||||
/**
|
||||
* Resume transmission of Analytics logs. Any Analytics logs that accumulated on disk while paused are sent to the
|
||||
* server.
|
||||
*
|
||||
* @see pause
|
||||
*/
|
||||
+ (void)resume;
|
||||
|
||||
/**
|
||||
* Get a transmission target.
|
||||
*
|
||||
* @param token The token of the transmission target to retrieve.
|
||||
*
|
||||
* @returns The transmission target object.
|
||||
*
|
||||
* @discussion This method does not need to be annotated with
|
||||
* NS_SWIFT_NAME(transmissionTarget(forToken:)) as this is a static method that
|
||||
* doesn't get translated like a setter in Swift.
|
||||
*
|
||||
* @see MSAnalyticsTransmissionTarget for comparison.
|
||||
*/
|
||||
+ (MSAnalyticsTransmissionTarget *)transmissionTargetForToken:(NSString *)token;
|
||||
|
||||
/**
|
||||
* Set the send time interval for non-critical logs.
|
||||
* Must be between 3 seconds and 86400 seconds (1 day).
|
||||
* Must be called before Analytics service start.
|
||||
*
|
||||
* @param interval The flush interval for logs.
|
||||
*/
|
||||
+ (void)setTransmissionInterval:(NSUInteger)interval;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,65 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#import "MSAnalyticsAuthenticationProviderDelegate.h"
|
||||
|
||||
/**
|
||||
* Different authentication types, e.g. MSA Compact, MSA Delegate, AAD,... .
|
||||
*/
|
||||
typedef NS_ENUM(NSUInteger, MSAnalyticsAuthenticationType) {
|
||||
|
||||
/**
|
||||
* AuthenticationType MSA Compact.
|
||||
*/
|
||||
MSAnalyticsAuthenticationTypeMsaCompact,
|
||||
|
||||
/**
|
||||
* AuthenticationType MSA Delegate.
|
||||
*/
|
||||
MSAnalyticsAuthenticationTypeMsaDelegate
|
||||
};
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface MSAnalyticsAuthenticationProvider : NSObject
|
||||
|
||||
/**
|
||||
* The type.
|
||||
*/
|
||||
@property(nonatomic, readonly, assign) MSAnalyticsAuthenticationType type;
|
||||
|
||||
/**
|
||||
* The ticket key for this authentication provider.
|
||||
*/
|
||||
@property(nonatomic, readonly, copy) NSString *ticketKey;
|
||||
|
||||
/**
|
||||
* The ticket key as hash.
|
||||
*/
|
||||
@property(nonatomic, readonly, copy) NSString *ticketKeyHash;
|
||||
|
||||
@property(nonatomic, readonly, weak) id<MSAnalyticsAuthenticationProviderDelegate> delegate;
|
||||
|
||||
/**
|
||||
* Create a new authentication provider.
|
||||
*
|
||||
* @param type The type for the provider, e.g. MSA.
|
||||
* @param ticketKey The ticket key for the provider.
|
||||
* @param delegate The delegate.
|
||||
*
|
||||
* @return A new authentication provider.
|
||||
*/
|
||||
- (instancetype)initWithAuthenticationType:(MSAnalyticsAuthenticationType)type
|
||||
ticketKey:(NSString *)ticketKey
|
||||
delegate:(id<MSAnalyticsAuthenticationProviderDelegate>)delegate;
|
||||
|
||||
/**
|
||||
* Check expiration.
|
||||
*/
|
||||
- (void)checkTokenExpiry;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,24 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@class MSAnalyticsAuthenticationProvider;
|
||||
|
||||
/**
|
||||
* Completion handler that returns the authentication token and the expiry date.
|
||||
*/
|
||||
typedef void (^MSAnalyticsAuthenticationProviderCompletionBlock)(NSString *token, NSDate *expiryDate);
|
||||
|
||||
@protocol MSAnalyticsAuthenticationProviderDelegate <NSObject>
|
||||
|
||||
/**
|
||||
* Required method that needs to be called from within your authentication flow to provide the authentication token and expiry date.
|
||||
*
|
||||
* @param authenticationProvider The authentication provider.
|
||||
* @param completionHandler The completion handler.
|
||||
*/
|
||||
- (void)authenticationProvider:(MSAnalyticsAuthenticationProvider *)authenticationProvider
|
||||
acquireTokenWithCompletionHandler:(MSAnalyticsAuthenticationProviderCompletionBlock)completionHandler;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,147 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#import "MSAnalyticsAuthenticationProvider.h"
|
||||
#import "MSConstants+Flags.h"
|
||||
#import "MSPropertyConfigurator.h"
|
||||
|
||||
@class MSEventProperties;
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface MSAnalyticsTransmissionTarget : NSObject
|
||||
|
||||
/**
|
||||
* Property configurator.
|
||||
*/
|
||||
@property(nonatomic, readonly, strong) MSPropertyConfigurator *propertyConfigurator;
|
||||
|
||||
+ (void)addAuthenticationProvider:(MSAnalyticsAuthenticationProvider *)authenticationProvider
|
||||
NS_SWIFT_NAME(addAuthenticationProvider(authenticationProvider:));
|
||||
|
||||
/**
|
||||
* Track an event.
|
||||
*
|
||||
* @param eventName event name.
|
||||
*/
|
||||
- (void)trackEvent:(NSString *)eventName;
|
||||
|
||||
/**
|
||||
* Track an event.
|
||||
*
|
||||
* @param eventName event name.
|
||||
* @param properties dictionary of properties.
|
||||
*/
|
||||
- (void)trackEvent:(NSString *)eventName withProperties:(nullable NSDictionary<NSString *, NSString *> *)properties;
|
||||
|
||||
/**
|
||||
* Track an event.
|
||||
*
|
||||
* @param eventName event name.
|
||||
* @param properties dictionary of properties.
|
||||
* @param flags Optional flags. Events tracked with the MSFlagsCritical flag will take precedence over all other events in
|
||||
* storage. An event tracked with this option will only be dropped if storage must make room for a newer event that is also marked with the
|
||||
* MSFlagsCritical flag.
|
||||
*/
|
||||
- (void)trackEvent:(NSString *)eventName withProperties:(nullable NSDictionary<NSString *, NSString *> *)properties flags:(MSFlags)flags;
|
||||
|
||||
/**
|
||||
* Track a custom event with name and optional typed properties.
|
||||
*
|
||||
* @param eventName Event name.
|
||||
* @param properties Typed properties.
|
||||
*
|
||||
* @discussion The following validation rules are applied:
|
||||
*
|
||||
* The name cannot be null or empty.
|
||||
*
|
||||
* The property names or values cannot be null.
|
||||
*
|
||||
* Double values must be finite (NaN or Infinite values are discarded).
|
||||
*
|
||||
* Additional validation rules apply depending on the configured secret.
|
||||
*
|
||||
* - The event name needs to match the `[a-zA-Z0-9]((\.(?!(\.|$)))|[_a-zA-Z0-9]){3,99}` regular expression.
|
||||
*
|
||||
* - The `baseData` and `baseDataType` properties are reserved and thus discarded.
|
||||
*
|
||||
* - The full event size when encoded as a JSON string cannot be larger than 1.9MB.
|
||||
*/
|
||||
- (void)trackEvent:(NSString *)eventName
|
||||
withTypedProperties:(nullable MSEventProperties *)properties NS_SWIFT_NAME(trackEvent(_:withProperties:));
|
||||
|
||||
/**
|
||||
* Track a custom event with name and optional typed properties.
|
||||
*
|
||||
* @param eventName Event name.
|
||||
* @param properties Typed properties.
|
||||
* @param flags Optional flags. Events tracked with the MSFlagsCritical flag will take precedence over all other events in
|
||||
* storage. An event tracked with this option will only be dropped if storage must make room for a newer event that is also marked with the
|
||||
* MSFlagsCritical flag.
|
||||
*
|
||||
* @discussion The following validation rules are applied:
|
||||
*
|
||||
* The name cannot be null or empty.
|
||||
*
|
||||
* The property names or values cannot be null.
|
||||
*
|
||||
* Double values must be finite (NaN or Infinite values are discarded).
|
||||
*
|
||||
* Additional validation rules apply depending on the configured secret.
|
||||
*
|
||||
* - The event name needs to match the `[a-zA-Z0-9]((\.(?!(\.|$)))|[_a-zA-Z0-9]){3,99}` regular expression.
|
||||
*
|
||||
* - The `baseData` and `baseDataType` properties are reserved and thus discarded.
|
||||
*
|
||||
* - The full event size when encoded as a JSON string cannot be larger than 1.9MB.
|
||||
*/
|
||||
- (void)trackEvent:(NSString *)eventName
|
||||
withTypedProperties:(nullable MSEventProperties *)properties
|
||||
flags:(MSFlags)flags NS_SWIFT_NAME(trackEvent(_:withProperties:flags:));
|
||||
|
||||
/**
|
||||
* Get a nested transmission target.
|
||||
*
|
||||
* @param token The token of the transmission target to retrieve.
|
||||
*
|
||||
* @returns A transmission target object nested to this parent transmission target.
|
||||
*/
|
||||
- (MSAnalyticsTransmissionTarget *)transmissionTargetForToken:(NSString *)token NS_SWIFT_NAME(transmissionTarget(forToken:));
|
||||
|
||||
/**
|
||||
* Enable or disable this transmission target. It will also enable or disable nested transmission targets.
|
||||
*
|
||||
* @param isEnabled YES to enable, NO to disable.
|
||||
*
|
||||
* @see isEnabled
|
||||
*/
|
||||
- (void)setEnabled:(BOOL)isEnabled;
|
||||
|
||||
/**
|
||||
* Check whether this transmission target is enabled or not.
|
||||
*
|
||||
* @return YES if enabled, NO otherwise.
|
||||
*
|
||||
* @see setEnabled:
|
||||
*/
|
||||
- (BOOL)isEnabled;
|
||||
|
||||
/**
|
||||
* Pause sending logs for the transmission target. It doesn't pause any of its decendants.
|
||||
*
|
||||
* @see resume
|
||||
*/
|
||||
- (void)pause;
|
||||
|
||||
/**
|
||||
* Resume sending logs for the transmission target.
|
||||
*
|
||||
* @see pause
|
||||
*/
|
||||
- (void)resume;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
13
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterAnalytics.framework/Headers/MSConstants+Flags.h
generated
Normal file
13
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterAnalytics.framework/Headers/MSConstants+Flags.h
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
typedef NS_OPTIONS(NSUInteger, MSFlags) {
|
||||
MSFlagsNone = (0 << 0), // => 00000000
|
||||
MSFlagsNormal = (1 << 0), // => 00000001
|
||||
MSFlagsCritical = (1 << 1), // => 00000010
|
||||
MSFlagsPersistenceNormal DEPRECATED_MSG_ATTRIBUTE("please use MSFlagsNormal") = MSFlagsNormal,
|
||||
MSFlagsPersistenceCritical DEPRECATED_MSG_ATTRIBUTE("please use MSFlagsCritical") = MSFlagsCritical,
|
||||
MSFlagsDefault = MSFlagsNormal
|
||||
};
|
||||
21
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterAnalytics.framework/Headers/MSEventLog.h
generated
Normal file
21
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterAnalytics.framework/Headers/MSEventLog.h
generated
Normal file
@@ -0,0 +1,21 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#import "MSLogWithNameAndProperties.h"
|
||||
|
||||
@class MSEventProperties;
|
||||
@class MSMetadataExtension;
|
||||
|
||||
@interface MSEventLog : MSLogWithNameAndProperties
|
||||
|
||||
/**
|
||||
* Unique identifier for this event.
|
||||
*/
|
||||
@property(nonatomic, copy) NSString *eventId;
|
||||
|
||||
/**
|
||||
* Event properties.
|
||||
*/
|
||||
@property(nonatomic, strong) MSEventProperties *typedProperties;
|
||||
|
||||
@end
|
||||
55
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterAnalytics.framework/Headers/MSEventProperties.h
generated
Normal file
55
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterAnalytics.framework/Headers/MSEventProperties.h
generated
Normal file
@@ -0,0 +1,55 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/**
|
||||
* Contains typed event properties.
|
||||
*/
|
||||
@interface MSEventProperties : NSObject
|
||||
|
||||
/**
|
||||
* Set a string property.
|
||||
*
|
||||
* @param value Property value.
|
||||
* @param key Property key.
|
||||
*/
|
||||
- (instancetype)setString:(NSString *)value forKey:(NSString *)key NS_SWIFT_NAME(setEventProperty(_:forKey:));
|
||||
|
||||
/**
|
||||
* Set a double property.
|
||||
*
|
||||
* @param value Property value. Must be finite (`NAN` and `INFINITY` not allowed).
|
||||
* @param key Property key.
|
||||
*/
|
||||
- (instancetype)setDouble:(double)value forKey:(NSString *)key NS_SWIFT_NAME(setEventProperty(_:forKey:));
|
||||
|
||||
/**
|
||||
* Set a 64-bit integer property.
|
||||
*
|
||||
* @param value Property value.
|
||||
* @param key Property key.
|
||||
*/
|
||||
- (instancetype)setInt64:(int64_t)value forKey:(NSString *)key NS_SWIFT_NAME(setEventProperty(_:forKey:));
|
||||
|
||||
/**
|
||||
* Set a boolean property.
|
||||
*
|
||||
* @param value Property value.
|
||||
* @param key Property key.
|
||||
*/
|
||||
- (instancetype)setBool:(BOOL)value forKey:(NSString *)key NS_SWIFT_NAME(setEventProperty(_:forKey:));
|
||||
|
||||
/**
|
||||
* Set a date property.
|
||||
*
|
||||
* @param value Property value.
|
||||
* @param key Property key.
|
||||
*/
|
||||
- (instancetype)setDate:(NSDate *)value forKey:(NSString *)key NS_SWIFT_NAME(setEventProperty(_:forKey:));
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,15 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#import "MSLogWithProperties.h"
|
||||
|
||||
@interface MSLogWithNameAndProperties : MSLogWithProperties
|
||||
|
||||
/**
|
||||
* Name of the event.
|
||||
*/
|
||||
@property(nonatomic, copy) NSString *name;
|
||||
|
||||
@end
|
||||
20
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterAnalytics.framework/Headers/MSLogWithProperties.h
generated
Normal file
20
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterAnalytics.framework/Headers/MSLogWithProperties.h
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#ifndef MS_LOG_WITH_PROPERTIES_H
|
||||
#define MS_LOG_WITH_PROPERTIES_H
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#import "MSAbstractLog.h"
|
||||
|
||||
@interface MSLogWithProperties : MSAbstractLog
|
||||
|
||||
/**
|
||||
* Additional key/value pair parameters. [optional]
|
||||
*/
|
||||
@property(nonatomic, strong) NSDictionary<NSString *, NSString *> *properties;
|
||||
|
||||
@end
|
||||
|
||||
#endif
|
||||
119
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterAnalytics.framework/Headers/MSPropertyConfigurator.h
generated
Normal file
119
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterAnalytics.framework/Headers/MSPropertyConfigurator.h
generated
Normal file
@@ -0,0 +1,119 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface MSPropertyConfigurator : NSObject
|
||||
|
||||
/**
|
||||
* Override the application version.
|
||||
*
|
||||
* @param appVersion New application version for a transmission target.
|
||||
*/
|
||||
- (void)setAppVersion:(nullable NSString *)appVersion;
|
||||
|
||||
/**
|
||||
* Override the application name.
|
||||
*
|
||||
* @param appName New application name for a transmission target.
|
||||
*/
|
||||
- (void)setAppName:(nullable NSString *)appName;
|
||||
|
||||
/**
|
||||
* Override the application locale.
|
||||
*
|
||||
* @param appLocale New application locale for a transmission target.
|
||||
*/
|
||||
- (void)setAppLocale:(nullable NSString *)appLocale;
|
||||
|
||||
/**
|
||||
* Set the user identifier.
|
||||
* The user identifier needs to start with c: or i: or d: or w: prefixes.
|
||||
*
|
||||
* @param userId user identifier.
|
||||
*/
|
||||
- (void)setUserId:(nullable NSString *)userId;
|
||||
|
||||
/**
|
||||
* Set a string event property to be attached to events tracked by this transmission target and its child transmission targets.
|
||||
*
|
||||
* @param propertyValue Property value.
|
||||
* @param propertyKey Property key.
|
||||
*
|
||||
* @discussion A property set in a child transmission target overrides a property with the same key inherited from its parents. Also, the
|
||||
* properties passed to the `trackEvent:withProperties:` or `trackEvent:withTypedProperties:` override any property with the same key from
|
||||
* the transmission target itself or its parents.
|
||||
*/
|
||||
- (void)setEventPropertyString:(NSString *)propertyValue forKey:(NSString *)propertyKey NS_SWIFT_NAME(setEventProperty(_:forKey:));
|
||||
|
||||
/**
|
||||
* Set a double event property to be attached to events tracked by this transmission target and its child transmission targets.
|
||||
*
|
||||
* @param propertyValue Property value. Must be finite (`NAN` and `INFINITY` not allowed).
|
||||
* @param propertyKey Property key.
|
||||
*
|
||||
* @discussion A property set in a child transmission target overrides a property with the same key inherited from its parents. Also, the
|
||||
* properties passed to the `trackEvent:withProperties:` or `trackEvent:withTypedProperties:` override any property with the same key from
|
||||
* the transmission target itself or its parents.
|
||||
*/
|
||||
- (void)setEventPropertyDouble:(double)propertyValue forKey:(NSString *)propertyKey NS_SWIFT_NAME(setEventProperty(_:forKey:));
|
||||
|
||||
/**
|
||||
* Set a 64-bit integer event property to be attached to events tracked by this transmission target and its child transmission targets.
|
||||
*
|
||||
* @param propertyValue Property value.
|
||||
* @param propertyKey Property key.
|
||||
*
|
||||
* @discussion A property set in a child transmission target overrides a property with the same key inherited from its parents. Also, the
|
||||
* properties passed to the `trackEvent:withProperties:` or `trackEvent:withTypedProperties:` override any property with the same key from
|
||||
* the transmission target itself or its parents.
|
||||
*/
|
||||
- (void)setEventPropertyInt64:(int64_t)propertyValue forKey:(NSString *)propertyKey NS_SWIFT_NAME(setEventProperty(_:forKey:));
|
||||
|
||||
/**
|
||||
* Set a boolean event property to be attached to events tracked by this transmission target and its child transmission targets.
|
||||
*
|
||||
* @param propertyValue Property value.
|
||||
* @param propertyKey Property key.
|
||||
*
|
||||
* @discussion A property set in a child transmission target overrides a property with the same key inherited from its parents. Also, the
|
||||
* properties passed to the `trackEvent:withProperties:` or `trackEvent:withTypedProperties:` override any property with the same key from
|
||||
* the transmission target itself or its parents.
|
||||
*/
|
||||
- (void)setEventPropertyBool:(BOOL)propertyValue forKey:(NSString *)propertyKey NS_SWIFT_NAME(setEventProperty(_:forKey:));
|
||||
|
||||
/**
|
||||
* Set a date event property to be attached to events tracked by this transmission target and its child transmission targets.
|
||||
*
|
||||
* @param propertyValue Property value.
|
||||
* @param propertyKey Property key.
|
||||
*
|
||||
* @discussion A property set in a child transmission target overrides a property with the same key inherited from its parents. Also, the
|
||||
* properties passed to the `trackEvent:withProperties:` or `trackEvent:withTypedProperties:` override any property with the same key from
|
||||
* the transmission target itself or its parents.
|
||||
*/
|
||||
- (void)setEventPropertyDate:(NSDate *)propertyValue forKey:(NSString *)propertyKey NS_SWIFT_NAME(setEventProperty(_:forKey:));
|
||||
|
||||
/**
|
||||
* Remove an event property from this transmission target.
|
||||
*
|
||||
* @param propertyKey Property key.
|
||||
*
|
||||
* @discussion This won't remove properties with the same name declared in other nested transmission targets.
|
||||
*/
|
||||
- (void)removeEventPropertyForKey:(NSString *)propertyKey NS_SWIFT_NAME(removeEventProperty(forKey:));
|
||||
|
||||
/**
|
||||
* Once called, the App Center SDK will automatically add UIDevice.identifierForVendor to common schema logs.
|
||||
*
|
||||
* @discussion Call this before starting the SDK. This setting is not persisted, so you need to call this when setting up the SDK every
|
||||
* time. If you want to provide a way for users to opt-in or opt-out of this setting, it is on you to persist their choice and configure the
|
||||
* App Center SDK accordingly.
|
||||
*/
|
||||
- (void)collectDeviceId;
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
||||
@end
|
||||
35
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterAnalytics.framework/Headers/MSService.h
generated
Normal file
35
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterAnalytics.framework/Headers/MSService.h
generated
Normal file
@@ -0,0 +1,35 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#ifndef MS_SERVICE_H
|
||||
#define MS_SERVICE_H
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
/**
|
||||
* Protocol declaring service logic.
|
||||
*/
|
||||
@protocol MSService <NSObject>
|
||||
|
||||
/**
|
||||
* Enable or disable this service.
|
||||
* The state is persisted in the device's storage across application launches.
|
||||
*
|
||||
* @param isEnabled Whether this service is enabled or not.
|
||||
*
|
||||
* @see isEnabled
|
||||
*/
|
||||
+ (void)setEnabled:(BOOL)isEnabled;
|
||||
|
||||
/**
|
||||
* Indicates whether this service is enabled.
|
||||
*
|
||||
* @return `YES` if this service is enabled, `NO` if it is not.
|
||||
*
|
||||
* @see setEnabled:
|
||||
*/
|
||||
+ (BOOL)isEnabled;
|
||||
|
||||
@end
|
||||
|
||||
#endif
|
||||
55
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterAnalytics.framework/Headers/MSServiceAbstract.h
generated
Normal file
55
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterAnalytics.framework/Headers/MSServiceAbstract.h
generated
Normal file
@@ -0,0 +1,55 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#ifndef MS_SERVICE_ABSTRACT_H
|
||||
#define MS_SERVICE_ABSTRACT_H
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#import "MSService.h"
|
||||
|
||||
@protocol MSChannelGroupProtocol;
|
||||
|
||||
/**
|
||||
* Abstraction of services common logic.
|
||||
* This class is intended to be subclassed only not instantiated directly.
|
||||
*/
|
||||
@interface MSServiceAbstract : NSObject <MSService>
|
||||
|
||||
/**
|
||||
* The flag indicates whether the service is started from application or not.
|
||||
*/
|
||||
@property(nonatomic, assign) BOOL startedFromApplication;
|
||||
|
||||
/**
|
||||
* Start this service with a channel group. Also sets the flag that indicates that a service has been started.
|
||||
*
|
||||
* @param channelGroup channel group used to persist and send logs.
|
||||
* @param appSecret app secret for the SDK.
|
||||
* @param token default transmission target token for this service.
|
||||
* @param fromApplication indicates whether the service started from an application or not.
|
||||
*/
|
||||
- (void)startWithChannelGroup:(id<MSChannelGroupProtocol>)channelGroup
|
||||
appSecret:(NSString *)appSecret
|
||||
transmissionTargetToken:(NSString *)token
|
||||
fromApplication:(BOOL)fromApplication;
|
||||
|
||||
/**
|
||||
* Update configuration when the service requires to start again. This method should only be called if the service is started from libraries
|
||||
* and then is being started from an application.
|
||||
*
|
||||
* @param appSecret app secret for the SDK.
|
||||
* @param token default transmission target token for this service.
|
||||
*/
|
||||
- (void)updateConfigurationWithAppSecret:(NSString *)appSecret transmissionTargetToken:(NSString *)token;
|
||||
|
||||
/**
|
||||
* Checks if the service needs the application secret.
|
||||
*
|
||||
* @return `YES` if the application secret is required, `NO` otherwise.
|
||||
*/
|
||||
- (BOOL)isAppSecretRequired;
|
||||
|
||||
@end
|
||||
|
||||
#endif
|
||||
BIN
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterAnalytics.framework/Info.plist
generated
Normal file
BIN
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterAnalytics.framework/Info.plist
generated
Normal file
Binary file not shown.
9
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterAnalytics.framework/Modules/module.modulemap
generated
Normal file
9
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterAnalytics.framework/Modules/module.modulemap
generated
Normal file
@@ -0,0 +1,9 @@
|
||||
framework module AppCenterAnalytics {
|
||||
umbrella header "AppCenterAnalytics.h"
|
||||
|
||||
export *
|
||||
module * { export * }
|
||||
|
||||
link framework "Foundation"
|
||||
link framework "UIKit"
|
||||
}
|
||||
BIN
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterCrashes.framework/AppCenterCrashes
generated
Normal file
BIN
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterCrashes.framework/AppCenterCrashes
generated
Normal file
Binary file not shown.
11
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterCrashes.framework/Headers/AppCenterCrashes.h
generated
Normal file
11
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterCrashes.framework/Headers/AppCenterCrashes.h
generated
Normal file
@@ -0,0 +1,11 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#import "MSCrashHandlerSetupDelegate.h"
|
||||
#import "MSCrashes.h"
|
||||
#import "MSCrashesDelegate.h"
|
||||
#import "MSErrorAttachmentLog+Utility.h"
|
||||
#import "MSErrorAttachmentLog.h"
|
||||
#import "MSWrapperCrashesHelper.h"
|
||||
13
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterCrashes.framework/Headers/MSAbstractLog.h
generated
Normal file
13
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterCrashes.framework/Headers/MSAbstractLog.h
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#ifndef MS_ABSTRACT_LOG_H
|
||||
#define MS_ABSTRACT_LOG_H
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface MSAbstractLog : NSObject
|
||||
|
||||
@end
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,33 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
/**
|
||||
* This is required for Wrapper SDKs that need to provide custom behavior surrounding the setup of crash handlers.
|
||||
*/
|
||||
@protocol MSCrashHandlerSetupDelegate <NSObject>
|
||||
|
||||
@optional
|
||||
|
||||
/**
|
||||
* Callback method that will be called immediately before crash handlers are set up.
|
||||
*/
|
||||
- (void)willSetUpCrashHandlers;
|
||||
|
||||
/**
|
||||
* Callback method that will be called immediately after crash handlers are set up.
|
||||
*/
|
||||
- (void)didSetUpCrashHandlers;
|
||||
|
||||
/**
|
||||
* Callback method that gets a value indicating whether the SDK should enable an uncaught exception handler.
|
||||
*
|
||||
* @return YES if SDK should enable uncaught exception handler, otherwise NO.
|
||||
*
|
||||
* @discussion Do not register an UncaughtExceptionHandler for Xamarin as we rely on the Xamarin runtime to report NSExceptions. Registering
|
||||
* our own UncaughtExceptionHandler will cause the Xamarin debugger to not work properly (it will not stop for NSExceptions).
|
||||
*/
|
||||
- (BOOL)shouldEnableUncaughtExceptionHandler;
|
||||
|
||||
@end
|
||||
171
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterCrashes.framework/Headers/MSCrashes.h
generated
Normal file
171
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterCrashes.framework/Headers/MSCrashes.h
generated
Normal file
@@ -0,0 +1,171 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#import "MSErrorReport.h"
|
||||
#import "MSServiceAbstract.h"
|
||||
|
||||
@class MSCrashesDelegate;
|
||||
|
||||
/**
|
||||
* Custom block that handles the alert that prompts the user whether crash reports need to be processed or not.
|
||||
*
|
||||
* @return Returns YES to discard crash reports, otherwise NO.
|
||||
*/
|
||||
typedef BOOL (^MSUserConfirmationHandler)(NSArray<MSErrorReport *> *_Nonnull errorReports);
|
||||
|
||||
/**
|
||||
* Error Logging status.
|
||||
*/
|
||||
typedef NS_ENUM(NSUInteger, MSErrorLogSetting) {
|
||||
|
||||
/**
|
||||
* Crash reporting is disabled.
|
||||
*/
|
||||
MSErrorLogSettingDisabled = 0,
|
||||
|
||||
/**
|
||||
* User is asked each time before sending error logs.
|
||||
*/
|
||||
MSErrorLogSettingAlwaysAsk = 1,
|
||||
|
||||
/**
|
||||
* Each error log is send automatically.
|
||||
*/
|
||||
MSErrorLogSettingAutoSend = 2
|
||||
};
|
||||
|
||||
/**
|
||||
* Crash Manager alert user input.
|
||||
*/
|
||||
typedef NS_ENUM(NSUInteger, MSUserConfirmation) {
|
||||
|
||||
/**
|
||||
* User chose not to send the crash report.
|
||||
*/
|
||||
MSUserConfirmationDontSend = 0,
|
||||
|
||||
/**
|
||||
* User wants the crash report to be sent.
|
||||
*/
|
||||
MSUserConfirmationSend = 1,
|
||||
|
||||
/**
|
||||
* User wants to send all error logs.
|
||||
*/
|
||||
MSUserConfirmationAlways = 2
|
||||
};
|
||||
|
||||
@protocol MSCrashesDelegate;
|
||||
|
||||
@interface MSCrashes : MSServiceAbstract
|
||||
|
||||
///-----------------------------------------------------------------------------
|
||||
/// @name Testing Crashes Feature
|
||||
///-----------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Lets the app crash for easy testing of the SDK.
|
||||
*
|
||||
* The best way to use this is to trigger the crash with a button action.
|
||||
*
|
||||
* Make sure not to let the app crash in `applicationDidFinishLaunching` or any other startup method! Since otherwise the app would crash
|
||||
* before the SDK could process it.
|
||||
*
|
||||
* Note that our SDK provides support for handling crashes that happen early on startup. Check the documentation for more information on how
|
||||
* to use this.
|
||||
*
|
||||
* If the SDK detects an App Store environment, it will _NOT_ cause the app to crash!
|
||||
*/
|
||||
+ (void)generateTestCrash;
|
||||
|
||||
///-----------------------------------------------------------------------------
|
||||
/// @name Helpers
|
||||
///-----------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Check if the app has crashed in the last session.
|
||||
*
|
||||
* @return Returns YES is the app has crashed in the last session.
|
||||
*/
|
||||
+ (BOOL)hasCrashedInLastSession;
|
||||
|
||||
/**
|
||||
* Check if the app received memory warning in the last session.
|
||||
*
|
||||
* @return Returns YES is the app received memory warning in the last session.
|
||||
*/
|
||||
+ (BOOL)hasReceivedMemoryWarningInLastSession;
|
||||
|
||||
/**
|
||||
* Provides details about the crash that occurred in the last app session
|
||||
*/
|
||||
+ (nullable MSErrorReport *)lastSessionCrashReport;
|
||||
|
||||
#if TARGET_OS_OSX
|
||||
/**
|
||||
* Callback for report exception.
|
||||
*
|
||||
* NOTE: This method should be called only if you explicitly disabled swizzling for it.
|
||||
*
|
||||
* On OS X runtime, not all uncaught exceptions end in a custom `NSUncaughtExceptionHandler`.
|
||||
* Forward exception from overrided `[NSApplication reportException:]` to catch additional exceptions.
|
||||
*/
|
||||
+ (void)applicationDidReportException:(NSException *_Nonnull)exception;
|
||||
#endif
|
||||
|
||||
///-----------------------------------------------------------------------------
|
||||
/// @name Configuration
|
||||
///-----------------------------------------------------------------------------
|
||||
|
||||
#if !TARGET_OS_TV
|
||||
/**
|
||||
* Disable the Mach exception server.
|
||||
*
|
||||
* By default, the SDK uses the Mach exception handler to catch fatal signals, e.g. stack overflows, via a Mach exception server. If you
|
||||
* want to disable the Mach exception handler, you should call this method _BEFORE_ starting the SDK. Your typical setup code would look
|
||||
* like this:
|
||||
*
|
||||
* `[MSCrashes disableMachExceptionHandler]`;
|
||||
* `[MSAppCenter start:@"YOUR_APP_ID" withServices:@[[MSCrashes class]]];`
|
||||
*
|
||||
* or if you are using Swift:
|
||||
*
|
||||
* `MSCrashes.disableMachExceptionHandler()`
|
||||
* `MSAppCenter.start("YOUR_APP_ID", withServices: [MSAnalytics.self, MSCrashes.self])`
|
||||
*
|
||||
* tvOS does not support the Mach exception handler, thus crashes that are caused by stack overflows cannot be detected. As a result,
|
||||
* disabling the Mach exception server is not available in the tvOS SDK.
|
||||
*
|
||||
* @discussion It can be useful to disable the Mach exception handler when you are debugging the Crashes service while developing,
|
||||
* especially when you attach the debugger to your application after launch.
|
||||
*/
|
||||
+ (void)disableMachExceptionHandler;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Set the delegate
|
||||
* Defines the class that implements the optional protocol `MSCrashesDelegate`.
|
||||
*
|
||||
* @see MSCrashesDelegate
|
||||
*/
|
||||
+ (void)setDelegate:(_Nullable id<MSCrashesDelegate>)delegate;
|
||||
|
||||
/**
|
||||
* Set a user confirmation handler that is invoked right before processing crash reports to determine whether sending crash reports or not.
|
||||
*
|
||||
* @param userConfirmationHandler A handler for user confirmation.
|
||||
*
|
||||
* @see MSUserConfirmationHandler
|
||||
*/
|
||||
+ (void)setUserConfirmationHandler:(_Nullable MSUserConfirmationHandler)userConfirmationHandler;
|
||||
|
||||
/**
|
||||
* Notify SDK with a confirmation to handle the crash report.
|
||||
*
|
||||
* @param userConfirmation A user confirmation.
|
||||
*
|
||||
* @see MSUserConfirmation.
|
||||
*/
|
||||
+ (void)notifyWithUserConfirmation:(MSUserConfirmation)userConfirmation;
|
||||
|
||||
@end
|
||||
65
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterCrashes.framework/Headers/MSCrashesDelegate.h
generated
Normal file
65
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterCrashes.framework/Headers/MSCrashesDelegate.h
generated
Normal file
@@ -0,0 +1,65 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@class MSCrashes;
|
||||
@class MSErrorReport;
|
||||
@class MSErrorAttachmentLog;
|
||||
|
||||
@protocol MSCrashesDelegate <NSObject>
|
||||
|
||||
@optional
|
||||
|
||||
/**
|
||||
* Callback method that will be called before processing errors.
|
||||
*
|
||||
* @param crashes The instance of MSCrashes.
|
||||
* @param errorReport The errorReport that will be sent.
|
||||
*
|
||||
* @discussion Crashes will send logs to the server or discard/delete logs based on this method's return value.
|
||||
*/
|
||||
- (BOOL)crashes:(MSCrashes *)crashes shouldProcessErrorReport:(MSErrorReport *)errorReport;
|
||||
|
||||
/**
|
||||
* Callback method that will be called before each error will be send to the server.
|
||||
*
|
||||
* @param crashes The instance of MSCrashes.
|
||||
* @param errorReport The errorReport that will be sent.
|
||||
*
|
||||
* @discussion Use this callback to display custom UI while crashes are sent to the server.
|
||||
*/
|
||||
- (void)crashes:(MSCrashes *)crashes willSendErrorReport:(MSErrorReport *)errorReport;
|
||||
|
||||
/**
|
||||
* Callback method that will be called in case the SDK was unable to send an error report to the server.
|
||||
*
|
||||
* @param crashes The instance of MSCrashes.
|
||||
* @param errorReport The errorReport that App Center sent.
|
||||
*
|
||||
* @discussion Use this method to hide your custom UI.
|
||||
*/
|
||||
- (void)crashes:(MSCrashes *)crashes didSucceedSendingErrorReport:(MSErrorReport *)errorReport;
|
||||
|
||||
/**
|
||||
* Callback method that will be called in case the SDK was unable to send an error report to the server.
|
||||
*
|
||||
* @param crashes The instance of MSCrashes.
|
||||
* @param errorReport The errorReport that App Center tried to send.
|
||||
* @param error The error that occurred.
|
||||
*/
|
||||
- (void)crashes:(MSCrashes *)crashes didFailSendingErrorReport:(MSErrorReport *)errorReport withError:(NSError *)error;
|
||||
|
||||
/**
|
||||
* Method to get the attachments associated to an error report.
|
||||
*
|
||||
* @param crashes The instance of MSCrashes.
|
||||
* @param errorReport The errorReport associated with the returned attachments.
|
||||
*
|
||||
* @return The attachments associated with the given error report or nil if the error report doesn't have any attachments.
|
||||
*
|
||||
* @discussion Implement this method if you want attachments to the given error report.
|
||||
*/
|
||||
- (NSArray<MSErrorAttachmentLog *> *)attachmentsWithCrashes:(MSCrashes *)crashes forErrorReport:(MSErrorReport *)errorReport;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,32 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#import "MSErrorAttachmentLog.h"
|
||||
|
||||
// Exporting symbols for category.
|
||||
extern NSString *MSMSErrorLogAttachmentLogUtilityCategory;
|
||||
|
||||
@interface MSErrorAttachmentLog (Utility)
|
||||
|
||||
/**
|
||||
* Create an attachment with a given filename and text.
|
||||
*
|
||||
* @param filename The filename the attachment should get. If nil will get an automatically generated filename.
|
||||
* @param text The attachment text.
|
||||
*
|
||||
* @return An instance of `MSErrorAttachmentLog`.
|
||||
*/
|
||||
+ (MSErrorAttachmentLog *)attachmentWithText:(NSString *)text filename:(NSString *)filename;
|
||||
|
||||
/**
|
||||
* Create an attachment with a given filename and `NSData` object.
|
||||
*
|
||||
* @param filename The filename the attachment should get. If nil will get an automatically generated filename.
|
||||
* @param data The attachment data as NSData.
|
||||
* @param contentType The content type of your data as MIME type.
|
||||
*
|
||||
* @return An instance of `MSErrorAttachmentLog`.
|
||||
*/
|
||||
+ (MSErrorAttachmentLog *)attachmentWithBinary:(NSData *)data filename:(NSString *)filename contentType:(NSString *)contentType;
|
||||
|
||||
@end
|
||||
49
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterCrashes.framework/Headers/MSErrorAttachmentLog.h
generated
Normal file
49
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterCrashes.framework/Headers/MSErrorAttachmentLog.h
generated
Normal file
@@ -0,0 +1,49 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#import "MSAbstractLog.h"
|
||||
|
||||
/**
|
||||
* Error attachment log.
|
||||
*/
|
||||
@interface MSErrorAttachmentLog : MSAbstractLog
|
||||
|
||||
/**
|
||||
* Content type (text/plain for text).
|
||||
*/
|
||||
@property(nonatomic, copy) NSString *contentType;
|
||||
|
||||
/**
|
||||
* File name.
|
||||
*/
|
||||
@property(nonatomic, copy) NSString *filename;
|
||||
|
||||
/**
|
||||
* The attachment data.
|
||||
*/
|
||||
@property(nonatomic, copy) NSData *data;
|
||||
|
||||
/**
|
||||
* Initialize an attachment with a given filename and `NSData` object.
|
||||
*
|
||||
* @param filename The filename the attachment should get. If nil will get an automatically generated filename.
|
||||
* @param data The attachment data as `NSData`.
|
||||
* @param contentType The content type of your data as MIME type.
|
||||
*
|
||||
* @return An instance of `MSErrorAttachmentLog`.
|
||||
*/
|
||||
- (instancetype)initWithFilename:(NSString *)filename attachmentBinary:(NSData *)data contentType:(NSString *)contentType;
|
||||
|
||||
/**
|
||||
* Initialize an attachment with a given filename and text.
|
||||
*
|
||||
* @param filename The filename the attachment should get. If nil will get an automatically generated filename.
|
||||
* @param text The attachment text.
|
||||
*
|
||||
* @return An instance of `MSErrorAttachmentLog`.
|
||||
*/
|
||||
- (instancetype)initWithFilename:(NSString *)filename attachmentText:(NSString *)text;
|
||||
|
||||
@end
|
||||
68
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterCrashes.framework/Headers/MSErrorReport.h
generated
Normal file
68
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterCrashes.framework/Headers/MSErrorReport.h
generated
Normal file
@@ -0,0 +1,68 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@class MSDevice;
|
||||
|
||||
@interface MSErrorReport : NSObject
|
||||
|
||||
/**
|
||||
* UUID for the crash report.
|
||||
*/
|
||||
@property(nonatomic, copy, readonly) NSString *incidentIdentifier;
|
||||
|
||||
/**
|
||||
* UUID for the app installation on the device.
|
||||
*/
|
||||
@property(nonatomic, copy, readonly) NSString *reporterKey;
|
||||
|
||||
/**
|
||||
* Signal that caused the crash.
|
||||
*/
|
||||
@property(nonatomic, copy, readonly) NSString *signal;
|
||||
|
||||
/**
|
||||
* Exception name that triggered the crash, nil if the crash was not caused by an exception.
|
||||
*/
|
||||
@property(nonatomic, copy, readonly) NSString *exceptionName;
|
||||
|
||||
/**
|
||||
* Exception reason, nil if the crash was not caused by an exception.
|
||||
*/
|
||||
@property(nonatomic, copy, readonly) NSString *exceptionReason;
|
||||
|
||||
/**
|
||||
* Date and time the app started, nil if unknown.
|
||||
*/
|
||||
@property(nonatomic, readonly, strong) NSDate *appStartTime;
|
||||
|
||||
/**
|
||||
* Date and time the error occurred, nil if unknown
|
||||
*/
|
||||
@property(nonatomic, readonly, strong) NSDate *appErrorTime;
|
||||
|
||||
/**
|
||||
* Device information of the app when it crashed.
|
||||
*/
|
||||
@property(nonatomic, readonly, strong) MSDevice *device;
|
||||
|
||||
/**
|
||||
* Identifier of the app process that crashed.
|
||||
*/
|
||||
@property(nonatomic, readonly, assign) NSUInteger appProcessIdentifier;
|
||||
|
||||
/**
|
||||
* Indicates if the app was killed while being in foreground from the iOS.
|
||||
*
|
||||
* This can happen if it consumed too much memory or the watchdog killed the app because it took too long to startup or blocks the main
|
||||
* thread for too long, or other reasons. See Apple documentation:
|
||||
* https://developer.apple.com/library/ios/qa/qa1693/_index.html.
|
||||
*
|
||||
* @return YES if the details represent an app kill instead of a crash.
|
||||
*
|
||||
* @see `[MSCrashes didReceiveMemoryWarningInLastSession]`
|
||||
*/
|
||||
- (BOOL)isAppKill;
|
||||
|
||||
@end
|
||||
35
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterCrashes.framework/Headers/MSService.h
generated
Normal file
35
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterCrashes.framework/Headers/MSService.h
generated
Normal file
@@ -0,0 +1,35 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#ifndef MS_SERVICE_H
|
||||
#define MS_SERVICE_H
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
/**
|
||||
* Protocol declaring service logic.
|
||||
*/
|
||||
@protocol MSService <NSObject>
|
||||
|
||||
/**
|
||||
* Enable or disable this service.
|
||||
* The state is persisted in the device's storage across application launches.
|
||||
*
|
||||
* @param isEnabled Whether this service is enabled or not.
|
||||
*
|
||||
* @see isEnabled
|
||||
*/
|
||||
+ (void)setEnabled:(BOOL)isEnabled;
|
||||
|
||||
/**
|
||||
* Indicates whether this service is enabled.
|
||||
*
|
||||
* @return `YES` if this service is enabled, `NO` if it is not.
|
||||
*
|
||||
* @see setEnabled:
|
||||
*/
|
||||
+ (BOOL)isEnabled;
|
||||
|
||||
@end
|
||||
|
||||
#endif
|
||||
55
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterCrashes.framework/Headers/MSServiceAbstract.h
generated
Normal file
55
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterCrashes.framework/Headers/MSServiceAbstract.h
generated
Normal file
@@ -0,0 +1,55 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#ifndef MS_SERVICE_ABSTRACT_H
|
||||
#define MS_SERVICE_ABSTRACT_H
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#import "MSService.h"
|
||||
|
||||
@protocol MSChannelGroupProtocol;
|
||||
|
||||
/**
|
||||
* Abstraction of services common logic.
|
||||
* This class is intended to be subclassed only not instantiated directly.
|
||||
*/
|
||||
@interface MSServiceAbstract : NSObject <MSService>
|
||||
|
||||
/**
|
||||
* The flag indicates whether the service is started from application or not.
|
||||
*/
|
||||
@property(nonatomic, assign) BOOL startedFromApplication;
|
||||
|
||||
/**
|
||||
* Start this service with a channel group. Also sets the flag that indicates that a service has been started.
|
||||
*
|
||||
* @param channelGroup channel group used to persist and send logs.
|
||||
* @param appSecret app secret for the SDK.
|
||||
* @param token default transmission target token for this service.
|
||||
* @param fromApplication indicates whether the service started from an application or not.
|
||||
*/
|
||||
- (void)startWithChannelGroup:(id<MSChannelGroupProtocol>)channelGroup
|
||||
appSecret:(NSString *)appSecret
|
||||
transmissionTargetToken:(NSString *)token
|
||||
fromApplication:(BOOL)fromApplication;
|
||||
|
||||
/**
|
||||
* Update configuration when the service requires to start again. This method should only be called if the service is started from libraries
|
||||
* and then is being started from an application.
|
||||
*
|
||||
* @param appSecret app secret for the SDK.
|
||||
* @param token default transmission target token for this service.
|
||||
*/
|
||||
- (void)updateConfigurationWithAppSecret:(NSString *)appSecret transmissionTargetToken:(NSString *)token;
|
||||
|
||||
/**
|
||||
* Checks if the service needs the application secret.
|
||||
*
|
||||
* @return `YES` if the application secret is required, `NO` otherwise.
|
||||
*/
|
||||
- (BOOL)isAppSecretRequired;
|
||||
|
||||
@end
|
||||
|
||||
#endif
|
||||
90
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterCrashes.framework/Headers/MSWrapperCrashesHelper.h
generated
Normal file
90
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterCrashes.framework/Headers/MSWrapperCrashesHelper.h
generated
Normal file
@@ -0,0 +1,90 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#import "MSCrashHandlerSetupDelegate.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@class MSErrorReport;
|
||||
@class MSErrorAttachmentLog;
|
||||
@class MSException;
|
||||
|
||||
/**
|
||||
* This general class allows wrappers to supplement the Crashes SDK with their own behavior.
|
||||
*/
|
||||
@interface MSWrapperCrashesHelper : NSObject
|
||||
|
||||
/**
|
||||
* Sets the crash handler setup delegate.
|
||||
*
|
||||
* @param delegate The delegate to set.
|
||||
*/
|
||||
+ (void)setCrashHandlerSetupDelegate:(id<MSCrashHandlerSetupDelegate>)delegate;
|
||||
|
||||
/**
|
||||
* Gets the crash handler setup delegate.
|
||||
*
|
||||
* @return The delegate being used by Crashes.
|
||||
*/
|
||||
+ (id<MSCrashHandlerSetupDelegate>)getCrashHandlerSetupDelegate;
|
||||
|
||||
/**
|
||||
* Enables or disables automatic crash processing.
|
||||
*
|
||||
* @param automaticProcessing Passing NO causes SDK not to send reports immediately, even if "Always Send" is true.
|
||||
*/
|
||||
+ (void)setAutomaticProcessing:(BOOL)automaticProcessing;
|
||||
|
||||
/**
|
||||
* Gets a list of unprocessed crash reports. Will block until the service starts.
|
||||
*
|
||||
* @return An array of unprocessed error reports.
|
||||
*/
|
||||
+ (NSArray<MSErrorReport *> *)unprocessedCrashReports;
|
||||
|
||||
/**
|
||||
* Resumes processing for a given subset of the unprocessed reports.
|
||||
*
|
||||
* @param filteredIds An array containing the errorId/incidentIdentifier of each report that should be sent.
|
||||
*
|
||||
* @return YES if should "Always Send" is true.
|
||||
*/
|
||||
+ (BOOL)sendCrashReportsOrAwaitUserConfirmationForFilteredIds:(NSArray<NSString *> *)filteredIds;
|
||||
|
||||
/**
|
||||
* Sends error attachments for a particular error report.
|
||||
*
|
||||
* @param errorAttachments An array of error attachments that should be sent.
|
||||
* @param incidentIdentifier The identifier of the error report that the attachments will be associated with.
|
||||
*/
|
||||
+ (void)sendErrorAttachments:(NSArray<MSErrorAttachmentLog *> *)errorAttachments withIncidentIdentifier:(NSString *)incidentIdentifier;
|
||||
|
||||
/**
|
||||
* Track handled exception directly as model form.
|
||||
* This API is used by wrapper SDKs.
|
||||
*
|
||||
* @param exception model form exception.
|
||||
* @param properties dictionary of properties.
|
||||
* @param attachments a list of attachments.
|
||||
*
|
||||
* @return handled error ID.
|
||||
*/
|
||||
+ (NSString *)trackModelException:(MSException *)exception
|
||||
withProperties:(nullable NSDictionary<NSString *, NSString *> *)properties
|
||||
withAttachments:(nullable NSArray<MSErrorAttachmentLog *> *)attachments;
|
||||
|
||||
/**
|
||||
* Get a generic error report representation for an handled exception.
|
||||
* This API is used by wrapper SDKs.
|
||||
*
|
||||
* @param errorID handled error ID.
|
||||
*
|
||||
* @return an error report.
|
||||
*/
|
||||
+ (MSErrorReport *)buildHandledErrorReportWithErrorID:(NSString *)errorID;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
BIN
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterCrashes.framework/Info.plist
generated
Normal file
BIN
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterCrashes.framework/Info.plist
generated
Normal file
Binary file not shown.
10
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterCrashes.framework/Modules/module.modulemap
generated
Normal file
10
Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterCrashes.framework/Modules/module.modulemap
generated
Normal file
@@ -0,0 +1,10 @@
|
||||
framework module AppCenterCrashes {
|
||||
umbrella header "AppCenterCrashes.h"
|
||||
|
||||
export *
|
||||
module * { export * }
|
||||
|
||||
link framework "Foundation"
|
||||
link "c++"
|
||||
link "z"
|
||||
}
|
||||
25
Pods/AppCenter/AppCenter-SDK-Apple/iOS/LICENSE
generated
Normal file
25
Pods/AppCenter/AppCenter-SDK-Apple/iOS/LICENSE
generated
Normal file
@@ -0,0 +1,25 @@
|
||||
Visual Studio App Center SDK for Apple platforms
|
||||
|
||||
Copyright (c) Microsoft Corporation
|
||||
|
||||
All rights reserved.
|
||||
|
||||
MIT License
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
55
Pods/AppCenter/AppCenter-SDK-Apple/iOS/README.md
generated
Normal file
55
Pods/AppCenter/AppCenter-SDK-Apple/iOS/README.md
generated
Normal file
@@ -0,0 +1,55 @@
|
||||
[](https://codecov.io/gh/microsoft/appcenter-sdk-apple)
|
||||
[](https://github.com/microsoft/appcenter-sdk-apple/releases/latest)
|
||||
[](https://cocoapods.org/pods/AppCenter)
|
||||
[](https://github.com/microsoft/appcenter-sdk-apple/blob/master/LICENSE)
|
||||
|
||||
# Visual Studio App Center SDK for iOS and macOS
|
||||
|
||||
App Center is your continuous integration, delivery and learning solution for iOS and macOS apps.
|
||||
Get faster release cycles, higher-quality apps, and the insights to build what users want.
|
||||
|
||||
The App Center SDK uses a modular architecture so you can use any or all of the following services:
|
||||
|
||||
1. **App Center Analytics**: App Center Analytics helps you understand user behavior and customer engagement to improve your app. The SDK automatically captures session count, device properties like model, OS version, etc. You can define your own custom events to measure things that matter to you. All the information captured is available in the App Center portal for you to analyze the data.
|
||||
|
||||
2. **App Center Crashes**: App Center Crashes will automatically generate a crash log every time your app crashes. The log is first written to the device's storage and when the user starts the app again, the crash report will be sent to App Center. Collecting crashes works for both beta and live apps, i.e. those submitted to the App Store. Crash logs contain valuable information for you to help fix the crash.
|
||||
|
||||
3. **App Center Distribute**: App Center Distribute lets your users install a new version of the app when you distribute it with App Center. With a new version of the app available, the SDK will present an update dialog to the users to either download or postpone the new version. Once they choose to update, the SDK will start to update your application. This feature is automatically disabled on versions of your app deployed to the Apple App Store. **Not available for macOS and tvOS*.
|
||||
|
||||
4. **App Center Push**: App Center Push enables you to send push notifications to users of your app from the App Center portal. You can also segment your user base based on a set of properties and send them targeted notifications. **Not available for tvOS*.
|
||||
|
||||
## 1. Get started
|
||||
|
||||
It is super easy to use App Center. Have a look at our [get started documentation](https://docs.microsoft.com/en-us/appcenter/sdk/getting-started/ios) and onboard your app within minutes. Our [detailed documentation](https://docs.microsoft.com/en-us/appcenter/sdk/) is available as well.
|
||||
|
||||
## 2. Contributing
|
||||
|
||||
We are looking forward to your contributions via pull requests.
|
||||
|
||||
To contribute to the SDK, please
|
||||
|
||||
* install Xcode 10.1 on your Mac.
|
||||
* install [Jazzy](https://github.com/realm/jazzy) to be able to generate documentation.
|
||||
* install `clang-format` for code formatting via [Homebrew](https://brew.sh) using the command `brew install clang-format`.
|
||||
|
||||
### 2.1 Code of Conduct
|
||||
|
||||
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
|
||||
|
||||
### 2.2 Contributor License
|
||||
|
||||
You must sign a [Contributor License Agreement](https://cla.microsoft.com/) before submitting your pull request. To complete the Contributor License Agreement (CLA), you will need to submit a request via the [form](https://cla.microsoft.com/) and then electronically sign the CLA when you receive the email containing the link to the document. You need to sign the CLA only once to cover submission to any Microsoft OSS project.
|
||||
|
||||
### 2.3 Code Formatting
|
||||
|
||||
All Objective-C files follow LLVM coding style (with a few exceptions) and are formatted accordingly. To format your changes, make sure you have the `clang-format` tool. It can be installed with [Homebrew](https://brew.sh) using the command `brew install clang-format`. Once you have installed `clang-format`, run `./clang-format-changed-files.sh` from the repository root - this will format all files that have changes against the remote `develop` branch (it will also perform a `git fetch`).
|
||||
|
||||
## 3. Contact
|
||||
|
||||
### 3.1 Support
|
||||
|
||||
App Center SDK support is provided directly within the App Center portal. Any time you need help, just log in to [App Center](https://appcenter.ms), then click the blue chat button in the lower-right corner of any page and our dedicated support team will respond to your questions and feedback. For additional information, see the [App Center Help Center](https://intercom.help/appcenter/getting-started/welcome-to-app-center-support).
|
||||
|
||||
### 3.2 Twitter
|
||||
|
||||
We're on Twitter as [@vsappcenter](https://www.twitter.com/vsappcenter).
|
||||
13
Pods/Manifest.lock
generated
13
Pods/Manifest.lock
generated
@@ -10,6 +10,14 @@ PODS:
|
||||
- AltSign/minizip (0.1)
|
||||
- AltSign/OpenSSL (0.1)
|
||||
- AltSign/plist (0.1)
|
||||
- AppCenter (3.1.0):
|
||||
- AppCenter/Analytics (= 3.1.0)
|
||||
- AppCenter/Crashes (= 3.1.0)
|
||||
- AppCenter/Analytics (3.1.0):
|
||||
- AppCenter/Core
|
||||
- AppCenter/Core (3.1.0)
|
||||
- AppCenter/Crashes (3.1.0):
|
||||
- AppCenter/Core
|
||||
- KeychainAccess (3.2.0)
|
||||
- Nuke (7.6.3)
|
||||
- Roxas (0.1)
|
||||
@@ -18,6 +26,7 @@ PODS:
|
||||
|
||||
DEPENDENCIES:
|
||||
- AltSign (from `Dependencies/AltSign`)
|
||||
- AppCenter (~> 3.1.0)
|
||||
- KeychainAccess (~> 3.2.0)
|
||||
- Nuke (~> 7.0)
|
||||
- Roxas (from `Dependencies/Roxas`)
|
||||
@@ -26,6 +35,7 @@ DEPENDENCIES:
|
||||
|
||||
SPEC REPOS:
|
||||
trunk:
|
||||
- AppCenter
|
||||
- KeychainAccess
|
||||
- Nuke
|
||||
- Sparkle
|
||||
@@ -45,12 +55,13 @@ CHECKOUT OPTIONS:
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
AltSign: c3693fa5a4b6d0ec6bedb74a5d768fe58bd67b87
|
||||
AppCenter: a1c30c47b7882a04a615ffa5ab26c007326436d8
|
||||
KeychainAccess: 3b1bf8a77eb4c6ea1ce9404c292e48f948954c6b
|
||||
Nuke: 44130e95e09463f8773ae4b96b90de1eba6b3350
|
||||
Roxas: 1990039f843f5dc284918dc82375feb80020ef62
|
||||
Sparkle: 3f75576db8b0265adef36c43249d747f22d0b708
|
||||
STPrivilegedTask: 56c3397238a1ec07720fb877a044898373cd2c68
|
||||
|
||||
PODFILE CHECKSUM: 1503b17048964bd0586d5470e6ee1e57917934de
|
||||
PODFILE CHECKSUM: 1317f1da77af3fbb8c90b0d34845d2f0068d488c
|
||||
|
||||
COCOAPODS: 1.8.4
|
||||
|
||||
724
Pods/Pods.xcodeproj/project.pbxproj
generated
724
Pods/Pods.xcodeproj/project.pbxproj
generated
File diff suppressed because it is too large
Load Diff
10
Pods/Target Support Files/AppCenter/AppCenter.xcconfig
generated
Normal file
10
Pods/Target Support Files/AppCenter/AppCenter.xcconfig
generated
Normal file
@@ -0,0 +1,10 @@
|
||||
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/AppCenter
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/AppCenter/AppCenter-SDK-Apple/iOS"
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||
PODS_BUILD_DIR = ${BUILD_DIR}
|
||||
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||
PODS_ROOT = ${SRCROOT}
|
||||
PODS_TARGET_SRCROOT = ${PODS_ROOT}/AppCenter
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
|
||||
SKIP_INSTALL = YES
|
||||
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
|
||||
@@ -1,6 +1,34 @@
|
||||
# Acknowledgements
|
||||
This application makes use of the following third party libraries:
|
||||
|
||||
## AppCenter
|
||||
|
||||
Visual Studio App Center SDK for Apple platforms
|
||||
|
||||
Copyright (c) Microsoft Corporation
|
||||
|
||||
All rights reserved.
|
||||
|
||||
MIT License
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
## KeychainAccess
|
||||
|
||||
The MIT License (MIT)
|
||||
|
||||
@@ -12,6 +12,40 @@
|
||||
<key>Type</key>
|
||||
<string>PSGroupSpecifier</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>FooterText</key>
|
||||
<string>Visual Studio App Center SDK for Apple platforms
|
||||
|
||||
Copyright (c) Microsoft Corporation
|
||||
|
||||
All rights reserved.
|
||||
|
||||
MIT License
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.</string>
|
||||
<key>License</key>
|
||||
<string>MIT</string>
|
||||
<key>Title</key>
|
||||
<string>AppCenter</string>
|
||||
<key>Type</key>
|
||||
<string>PSGroupSpecifier</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>FooterText</key>
|
||||
<string>The MIT License (MIT)
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/AppCenter/AppCenter-SDK-Apple/iOS"
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||
HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AltSign" "${PODS_ROOT}/Headers/Public/Roxas" "$(SRCROOT)/../Dependencies/AltSign/Dependencies/ldid/libplist/include" "$(SRCROOT)/../Dependencies/AltSign/Dependencies/ldid/libplist/src"
|
||||
LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AltSign" "${PODS_CONFIGURATION_BUILD_DIR}/KeychainAccess" "${PODS_CONFIGURATION_BUILD_DIR}/Nuke" "${PODS_CONFIGURATION_BUILD_DIR}/Roxas" "${PODS_ROOT}/../Dependencies/AltSign/Dependencies/OpenSSL/ios/lib"
|
||||
OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/KeychainAccess/KeychainAccess.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Nuke/Nuke.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/AltSign/AltSign.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/Roxas/Roxas.modulemap" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/AltSign"
|
||||
OTHER_LDFLAGS = $(inherited) -ObjC -l"AltSign" -l"KeychainAccess" -l"Nuke" -l"Roxas" -l"c++" -l"crypto" -l"ssl"
|
||||
OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/KeychainAccess/KeychainAccess.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Nuke/Nuke.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/AltSign/AltSign.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/Roxas/Roxas.modulemap" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/AltSign" -iframework "${PODS_ROOT}/AppCenter/AppCenter-SDK-Apple/iOS"
|
||||
OTHER_LDFLAGS = $(inherited) -ObjC -l"AltSign" -l"KeychainAccess" -l"Nuke" -l"Roxas" -l"c++" -l"crypto" -l"sqlite3" -l"ssl" -l"z" -framework "AppCenter" -framework "AppCenterAnalytics" -framework "AppCenterCrashes" -framework "CoreTelephony" -framework "Foundation" -framework "SystemConfiguration" -framework "UIKit"
|
||||
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/KeychainAccess/KeychainAccess.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Nuke/Nuke.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/AltSign/AltSign.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/Roxas/Roxas.modulemap"
|
||||
PODS_BUILD_DIR = ${BUILD_DIR}
|
||||
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/AppCenter/AppCenter-SDK-Apple/iOS"
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||
HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AltSign" "${PODS_ROOT}/Headers/Public/Roxas" "$(SRCROOT)/../Dependencies/AltSign/Dependencies/ldid/libplist/include" "$(SRCROOT)/../Dependencies/AltSign/Dependencies/ldid/libplist/src"
|
||||
LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AltSign" "${PODS_CONFIGURATION_BUILD_DIR}/KeychainAccess" "${PODS_CONFIGURATION_BUILD_DIR}/Nuke" "${PODS_CONFIGURATION_BUILD_DIR}/Roxas" "${PODS_ROOT}/../Dependencies/AltSign/Dependencies/OpenSSL/ios/lib"
|
||||
OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/KeychainAccess/KeychainAccess.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Nuke/Nuke.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/AltSign/AltSign.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/Roxas/Roxas.modulemap" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/AltSign"
|
||||
OTHER_LDFLAGS = $(inherited) -ObjC -l"AltSign" -l"KeychainAccess" -l"Nuke" -l"Roxas" -l"c++" -l"crypto" -l"ssl"
|
||||
OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/KeychainAccess/KeychainAccess.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Nuke/Nuke.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/AltSign/AltSign.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/Roxas/Roxas.modulemap" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/AltSign" -iframework "${PODS_ROOT}/AppCenter/AppCenter-SDK-Apple/iOS"
|
||||
OTHER_LDFLAGS = $(inherited) -ObjC -l"AltSign" -l"KeychainAccess" -l"Nuke" -l"Roxas" -l"c++" -l"crypto" -l"sqlite3" -l"ssl" -l"z" -framework "AppCenter" -framework "AppCenterAnalytics" -framework "AppCenterCrashes" -framework "CoreTelephony" -framework "Foundation" -framework "SystemConfiguration" -framework "UIKit"
|
||||
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/KeychainAccess/KeychainAccess.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Nuke/Nuke.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/AltSign/AltSign.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/Roxas/Roxas.modulemap"
|
||||
PODS_BUILD_DIR = ${BUILD_DIR}
|
||||
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||
|
||||
Reference in New Issue
Block a user