diff --git a/CHANGELOG.md b/CHANGELOG.md index 5dd81362d8..59251179a1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,14 @@ # Mobile Center SDK for iOS Change Log +## Version 0.12.3 + +This version contains a bug fix when the frameworks are integrated on applications which are built on Xcode 8 + +___ + ## Version 0.12.2 -This version contains a buf fix and improvements. **Verified all functionalities against iOS 11 GM.** +This version contains a bug fix and improvements. **Verified all functionalities against iOS 11 GM.** ### MobileCenterCrashes diff --git a/Config/Global.xcconfig b/Config/Global.xcconfig index da6c8777c4..23b416f710 100644 --- a/Config/Global.xcconfig +++ b/Config/Global.xcconfig @@ -1,5 +1,5 @@ BUILD_NUMBER = 1 -VERSION_STRING = 0.12.2 +VERSION_STRING = 0.12.3 // :Mark: Architectures MS_WATCH_ARCHS = armv7k diff --git a/Documentation/iOS/MobileCenter/.jazzy.yaml b/Documentation/iOS/MobileCenter/.jazzy.yaml index 3efb7cbdfe..9bd19969fd 100644 --- a/Documentation/iOS/MobileCenter/.jazzy.yaml +++ b/Documentation/iOS/MobileCenter/.jazzy.yaml @@ -5,7 +5,7 @@ sdk: iphonesimulator theme: ../../Themes/apple module: MobileCenter -module_version: 0.12.2 +module_version: 0.12.3 author: Microsoft Corp author_url: http://www.microsoft.com diff --git a/Documentation/iOS/MobileCenterAnalytics/.jazzy.yaml b/Documentation/iOS/MobileCenterAnalytics/.jazzy.yaml index 41280ef0f8..b5ed76d5fb 100644 --- a/Documentation/iOS/MobileCenterAnalytics/.jazzy.yaml +++ b/Documentation/iOS/MobileCenterAnalytics/.jazzy.yaml @@ -5,7 +5,7 @@ sdk: iphonesimulator theme: ../../Themes/apple module: MobileCenterAnalytics -module_version: 0.12.2 +module_version: 0.12.3 author: Microsoft Corp author_url: http://www.microsoft.com diff --git a/Documentation/iOS/MobileCenterCrashes/.jazzy.yaml b/Documentation/iOS/MobileCenterCrashes/.jazzy.yaml index f50946fe69..a109fbac82 100644 --- a/Documentation/iOS/MobileCenterCrashes/.jazzy.yaml +++ b/Documentation/iOS/MobileCenterCrashes/.jazzy.yaml @@ -5,7 +5,7 @@ sdk: iphonesimulator theme: ../../Themes/apple module: Crashes -module_version: 0.12.2 +module_version: 0.12.3 author: Microsoft Corp author_url: http://www.microsoft.com diff --git a/Documentation/iOS/MobileCenterDistribute/.jazzy.yaml b/Documentation/iOS/MobileCenterDistribute/.jazzy.yaml index dfde796dad..c440059927 100644 --- a/Documentation/iOS/MobileCenterDistribute/.jazzy.yaml +++ b/Documentation/iOS/MobileCenterDistribute/.jazzy.yaml @@ -5,7 +5,7 @@ sdk: iphonesimulator theme: ../../Themes/apple module: Distribute -module_version: 0.12.2 +module_version: 0.12.3 author: Microsoft Corp author_url: http://www.microsoft.com diff --git a/Documentation/iOS/MobileCenterPush/.jazzy.yaml b/Documentation/iOS/MobileCenterPush/.jazzy.yaml index eb6e5a106c..1a9960a745 100644 --- a/Documentation/iOS/MobileCenterPush/.jazzy.yaml +++ b/Documentation/iOS/MobileCenterPush/.jazzy.yaml @@ -5,7 +5,7 @@ sdk: iphonesimulator theme: ../../Themes/apple module: MobileCenterPush -module_version: 0.12.2 +module_version: 0.12.3 author: Microsoft Corp author_url: http://www.microsoft.com diff --git a/Documentation/macOS/MobileCenter/.jazzy.yaml b/Documentation/macOS/MobileCenter/.jazzy.yaml index 95dc4057dd..64b20787ac 100644 --- a/Documentation/macOS/MobileCenter/.jazzy.yaml +++ b/Documentation/macOS/MobileCenter/.jazzy.yaml @@ -5,7 +5,7 @@ sdk: macosx theme: ../../Themes/apple module: MobileCenter -module_version: 0.12.2 +module_version: 0.12.3 author: Microsoft Corp author_url: http://www.microsoft.com diff --git a/Documentation/macOS/MobileCenterAnalytics/.jazzy.yaml b/Documentation/macOS/MobileCenterAnalytics/.jazzy.yaml index 018cebd119..669c04c33d 100644 --- a/Documentation/macOS/MobileCenterAnalytics/.jazzy.yaml +++ b/Documentation/macOS/MobileCenterAnalytics/.jazzy.yaml @@ -5,7 +5,7 @@ sdk: macosx theme: ../../Themes/apple module: MobileCenterAnalytics -module_version: 0.12.2 +module_version: 0.12.3 author: Microsoft Corp author_url: http://www.microsoft.com diff --git a/Documentation/macOS/MobileCenterCrashes/.jazzy.yaml b/Documentation/macOS/MobileCenterCrashes/.jazzy.yaml index fae1af185c..e6f5e423db 100644 --- a/Documentation/macOS/MobileCenterCrashes/.jazzy.yaml +++ b/Documentation/macOS/MobileCenterCrashes/.jazzy.yaml @@ -5,7 +5,7 @@ sdk: macosx theme: ../../Themes/apple module: Crashes -module_version: 0.12.2 +module_version: 0.12.3 author: Microsoft Corp author_url: http://www.microsoft.com diff --git a/Documentation/macOS/MobileCenterPush/.jazzy.yaml b/Documentation/macOS/MobileCenterPush/.jazzy.yaml index 62e590304d..5ae07958e8 100644 --- a/Documentation/macOS/MobileCenterPush/.jazzy.yaml +++ b/Documentation/macOS/MobileCenterPush/.jazzy.yaml @@ -5,7 +5,7 @@ sdk: macosx theme: ../../Themes/apple module: MobileCenterPush -module_version: 0.12.2 +module_version: 0.12.3 author: Microsoft Corp author_url: http://www.microsoft.com diff --git a/Documentation/tvOS/MobileCenter/.jazzy.yaml b/Documentation/tvOS/MobileCenter/.jazzy.yaml index e393301bd7..cd074f22e7 100644 --- a/Documentation/tvOS/MobileCenter/.jazzy.yaml +++ b/Documentation/tvOS/MobileCenter/.jazzy.yaml @@ -5,7 +5,7 @@ sdk: appletvsimulator theme: ../../Themes/apple module: MobileCenter -module_version: 0.12.2 +module_version: 0.12.3 author: Microsoft Corp author_url: http://www.microsoft.com diff --git a/Documentation/tvOS/MobileCenterAnalytics/.jazzy.yaml b/Documentation/tvOS/MobileCenterAnalytics/.jazzy.yaml index c651e21d37..40b34e0f7c 100644 --- a/Documentation/tvOS/MobileCenterAnalytics/.jazzy.yaml +++ b/Documentation/tvOS/MobileCenterAnalytics/.jazzy.yaml @@ -5,7 +5,7 @@ sdk: appletvsimulator theme: ../../Themes/apple module: MobileCenterAnalytics -module_version: 0.12.2 +module_version: 0.12.3 author: Microsoft Corp author_url: http://www.microsoft.com diff --git a/Documentation/tvOS/MobileCenterCrashes/.jazzy.yaml b/Documentation/tvOS/MobileCenterCrashes/.jazzy.yaml index f057b8f493..99f9abb1e4 100644 --- a/Documentation/tvOS/MobileCenterCrashes/.jazzy.yaml +++ b/Documentation/tvOS/MobileCenterCrashes/.jazzy.yaml @@ -5,7 +5,7 @@ sdk: appletvsimulator theme: ../../Themes/apple module: Crashes -module_version: 0.12.2 +module_version: 0.12.3 author: Microsoft Corp author_url: http://www.microsoft.com diff --git a/MobileCenter.podspec b/MobileCenter.podspec index 81cb199b21..a4f13cddca 100644 --- a/MobileCenter.podspec +++ b/MobileCenter.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'MobileCenter' - s.version = '0.12.2' + s.version = '0.12.3' s.summary = 'Mobile Center is mission control for mobile apps. Get faster release cycles, higher-quality apps, and the insights to build what users want.' s.description = <<-DESC diff --git a/MobileCenter/MobileCenterTests/MSDeviceTrackerTests.m b/MobileCenter/MobileCenterTests/MSDeviceTrackerTests.m index 85a4e98072..406a62b686 100644 --- a/MobileCenter/MobileCenterTests/MSDeviceTrackerTests.m +++ b/MobileCenter/MobileCenterTests/MSDeviceTrackerTests.m @@ -86,7 +86,6 @@ - (void)testDeviceModel { - (void)testDeviceOSName { // If - #if TARGET_OS_OSX NSString *expected = @"macOS"; #else @@ -96,7 +95,6 @@ - (void)testDeviceOSName { #endif // When - #if TARGET_OS_OSX NSString *osName = [self.sut osName]; #else @@ -145,6 +143,10 @@ - (void)testDeviceOSVersion { // Then assertThat(osVersion, is(expected)); + +#if TARGET_OS_OSX && __MAC_OS_X_VERSION_MAX_ALLOWED > 1090 + [processInfoMock stopMocking]; +#endif } - (void)testDeviceLocale { diff --git a/MobileCenter/MobileCenterTests/MSIngestionSenderTests.m b/MobileCenter/MobileCenterTests/MSIngestionSenderTests.m index 7766f2bd43..b847e235c1 100644 --- a/MobileCenter/MobileCenterTests/MSIngestionSenderTests.m +++ b/MobileCenter/MobileCenterTests/MSIngestionSenderTests.m @@ -112,7 +112,14 @@ - (void)testUnrecoverableError { XCTAssertEqual(error.code, kMSMCConnectionHttpErrorCode); XCTAssertEqual(error.localizedDescription, kMSMCConnectionHttpErrorDesc); XCTAssertTrue([error.userInfo[kMSMCConnectionHttpCodeErrorKey] isEqual:@(MSHTTPCodesNo404NotFound)]); - [expectation fulfill]; + + /* + * FIXME: This unit test failes intermittently because of timing issue. Wait a little bit of time + * here so that [MSSender call:completedWithFatalError:] can be invoked right after this completion handler. + */ + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [expectation fulfill]; + }); }]; // Then diff --git a/MobileCenterAnalytics/MobileCenterAnalytics.xcodeproj/project.pbxproj b/MobileCenterAnalytics/MobileCenterAnalytics.xcodeproj/project.pbxproj index fb463a7191..14034a5e07 100644 --- a/MobileCenterAnalytics/MobileCenterAnalytics.xcodeproj/project.pbxproj +++ b/MobileCenterAnalytics/MobileCenterAnalytics.xcodeproj/project.pbxproj @@ -102,7 +102,6 @@ 043121641EE0C20A007054C5 /* MSSessionHistoryInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = E89B33E51D5A526D00FDE8FB /* MSSessionHistoryInfo.h */; }; 043121651EE0C20A007054C5 /* MSAnalytics.h in Headers */ = {isa = PBXBuildFile; fileRef = E85547C31D2D6253002DF6E2 /* MSAnalytics.h */; settings = {ATTRIBUTES = (Public, ); }; }; 043121661EE0C20A007054C5 /* MSEventLog.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E3E2CC51D359D5E00B1EE50 /* MSEventLog.h */; }; - 043121671EE0C20A007054C5 /* ../MobileCenter/MobileCenter/MSService.h in Headers */ = {isa = PBXBuildFile; fileRef = 38D4BB9F1D5A98D1001A30A0 /* ../MobileCenter/MobileCenter/MSService.h */; settings = {ATTRIBUTES = (Public, ); }; }; 043121681EE0C20A007054C5 /* MSSessionTracker.h in Headers */ = {isa = PBXBuildFile; fileRef = E8E48F9C1D515C3900A8C1B0 /* MSSessionTracker.h */; }; 0446DF411F3B8E6300C8E338 /* MSAnalyticsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 042A17A71DEFA950003BA80A /* MSAnalyticsTests.m */; }; 0446DF421F3B8E6300C8E338 /* MSMockAnalyticsDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 35BF19E41DF9D59E00193027 /* MSMockAnalyticsDelegate.m */; }; @@ -143,17 +142,18 @@ 0485AF7D1EAA79E300C10CAF /* MSSessionHistoryInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = E89B33E51D5A526D00FDE8FB /* MSSessionHistoryInfo.h */; }; 0485AF7E1EAA79E300C10CAF /* MSAnalytics.h in Headers */ = {isa = PBXBuildFile; fileRef = E85547C31D2D6253002DF6E2 /* MSAnalytics.h */; settings = {ATTRIBUTES = (Public, ); }; }; 0485AF7F1EAA79E300C10CAF /* MSEventLog.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E3E2CC51D359D5E00B1EE50 /* MSEventLog.h */; }; - 0485AF801EAA79E300C10CAF /* ../MobileCenter/MobileCenter/MSService.h in Headers */ = {isa = PBXBuildFile; fileRef = 38D4BB9F1D5A98D1001A30A0 /* ../MobileCenter/MobileCenter/MSService.h */; settings = {ATTRIBUTES = (Public, ); }; }; 0485AF811EAA79E300C10CAF /* MSSessionTracker.h in Headers */ = {isa = PBXBuildFile; fileRef = E8E48F9C1D515C3900A8C1B0 /* MSSessionTracker.h */; }; 0485AF8F1EAA852A00C10CAF /* MSAnalyticsCategory.h in Headers */ = {isa = PBXBuildFile; fileRef = 0485AF8D1EAA852A00C10CAF /* MSAnalyticsCategory.h */; }; 0485AF901EAA852A00C10CAF /* MSAnalyticsCategory.m in Sources */ = {isa = PBXBuildFile; fileRef = 0485AF8E1EAA852A00C10CAF /* MSAnalyticsCategory.m */; }; + 04A082061F74BB8600DC776D /* MSService.h in Headers */ = {isa = PBXBuildFile; fileRef = 04A082051F74BB8600DC776D /* MSService.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 04A082071F74BB8C00DC776D /* MSService.h in Headers */ = {isa = PBXBuildFile; fileRef = 04A082051F74BB8600DC776D /* MSService.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 04A082081F74BB8D00DC776D /* MSService.h in Headers */ = {isa = PBXBuildFile; fileRef = 04A082051F74BB8600DC776D /* MSService.h */; settings = {ATTRIBUTES = (Public, ); }; }; 04A1409D1ECE728B001CEE94 /* MSAnalyticsCategory.h in Headers */ = {isa = PBXBuildFile; fileRef = 0485AF8D1EAA852A00C10CAF /* MSAnalyticsCategory.h */; }; 04A1409E1ECE7316001CEE94 /* MSAnalyticsCategory.m in Sources */ = {isa = PBXBuildFile; fileRef = 0485AF8E1EAA852A00C10CAF /* MSAnalyticsCategory.m */; }; 04BED7181ECB64FB00E20975 /* OCHamcrest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04BED7161ECB64CE00E20975 /* OCHamcrest.framework */; }; 35BF19E51DF9D59E00193027 /* MSMockAnalyticsDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 35BF19E41DF9D59E00193027 /* MSMockAnalyticsDelegate.m */; }; 3813B9651DBFE68200831214 /* MSAnalyticsInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 3813B9641DBFE68200831214 /* MSAnalyticsInternal.h */; }; 387C77051D6CC39400D68CC1 /* MSServiceAbstract.h in Headers */ = {isa = PBXBuildFile; fileRef = 387C77041D6CC39400D68CC1 /* MSServiceAbstract.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 38D4BBA11D5A98D1001A30A0 /* ../MobileCenter/MobileCenter/MSService.h in Headers */ = {isa = PBXBuildFile; fileRef = 38D4BB9F1D5A98D1001A30A0 /* ../MobileCenter/MobileCenter/MSService.h */; settings = {ATTRIBUTES = (Public, ); }; }; 6E0684381D35A3B900A8CC6C /* OCHamcrestIOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E0684371D35A3B900A8CC6C /* OCHamcrestIOS.framework */; }; 6E3E2CCB1D359D5E00B1EE50 /* MSEventLog.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E3E2CC51D359D5E00B1EE50 /* MSEventLog.h */; }; 6E3E2CCC1D359D5E00B1EE50 /* MSEventLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E3E2CC61D359D5E00B1EE50 /* MSEventLog.m */; }; @@ -279,6 +279,7 @@ 049BC82A1ECE3B9400FB6719 /* iOS.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = iOS.xcconfig; sourceTree = ""; }; 049BC82B1ECE3B9A00FB6719 /* macOS.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = macOS.xcconfig; sourceTree = ""; }; 049BC82C1ECE3CF000FB6719 /* Tests macOS.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = "Tests macOS.xcconfig"; path = "../../Config/Tests macOS.xcconfig"; sourceTree = ""; }; + 04A082051F74BB8600DC776D /* MSService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MSService.h; path = ../MobileCenter/MobileCenter/MSService.h; sourceTree = ""; }; 04BED7161ECB64CE00E20975 /* OCHamcrest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OCHamcrest.framework; path = ../../Vendor/macOS/OCHamcrest/OCHamcrest.framework; sourceTree = ""; }; 04ED31E91EAAD32B0033BAAE /* macOS.modulemap */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = "sourcecode.module-map"; path = macOS.modulemap; sourceTree = ""; }; 04ED31EB1EAAD3390033BAAE /* iOS.modulemap */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = "sourcecode.module-map"; path = iOS.modulemap; sourceTree = ""; }; @@ -287,7 +288,6 @@ 35BF19E41DF9D59E00193027 /* MSMockAnalyticsDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MSMockAnalyticsDelegate.m; sourceTree = ""; }; 3813B9641DBFE68200831214 /* MSAnalyticsInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MSAnalyticsInternal.h; sourceTree = ""; }; 387C77041D6CC39400D68CC1 /* MSServiceAbstract.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MSServiceAbstract.h; path = ../MobileCenter/MobileCenter/MSServiceAbstract.h; sourceTree = ""; }; - 38D4BB9F1D5A98D1001A30A0 /* ../MobileCenter/MobileCenter/MSService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ../MobileCenter/MobileCenter/MSService.h; sourceTree = ""; }; 6E0684371D35A3B900A8CC6C /* OCHamcrestIOS.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OCHamcrestIOS.framework; path = ../../Vendor/iOS/OCHamcrest/OCHamcrestIOS.framework; sourceTree = ""; }; 6E3E2CC51D359D5E00B1EE50 /* MSEventLog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MSEventLog.h; sourceTree = ""; }; 6E3E2CC61D359D5E00B1EE50 /* MSEventLog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MSEventLog.m; sourceTree = ""; }; @@ -511,6 +511,7 @@ E85547B71D2D6253002DF6E2 = { isa = PBXGroup; children = ( + 04A082051F74BB8600DC776D /* MSService.h */, 387C77041D6CC39400D68CC1 /* MSServiceAbstract.h */, E8AEE97F1D596C8B00C0FF6C /* MSLogManager.h */, E85547C21D2D6253002DF6E2 /* MobileCenterAnalytics */, @@ -622,7 +623,7 @@ 043121641EE0C20A007054C5 /* MSSessionHistoryInfo.h in Headers */, 043121651EE0C20A007054C5 /* MSAnalytics.h in Headers */, 043121661EE0C20A007054C5 /* MSEventLog.h in Headers */, - 043121671EE0C20A007054C5 /* ../MobileCenter/MobileCenter/MSService.h in Headers */, + 04A082071F74BB8C00DC776D /* MSService.h in Headers */, 043121681EE0C20A007054C5 /* MSSessionTracker.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; @@ -644,7 +645,7 @@ 0485AF7D1EAA79E300C10CAF /* MSSessionHistoryInfo.h in Headers */, 0485AF7E1EAA79E300C10CAF /* MSAnalytics.h in Headers */, 0485AF7F1EAA79E300C10CAF /* MSEventLog.h in Headers */, - 0485AF801EAA79E300C10CAF /* ../MobileCenter/MobileCenter/MSService.h in Headers */, + 04A082081F74BB8D00DC776D /* MSService.h in Headers */, 0485AF811EAA79E300C10CAF /* MSSessionTracker.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; @@ -666,7 +667,7 @@ E89B33E71D5A526D00FDE8FB /* MSSessionHistoryInfo.h in Headers */, E85547F81D2D6A7D002DF6E2 /* MSAnalytics.h in Headers */, 6E3E2CCB1D359D5E00B1EE50 /* MSEventLog.h in Headers */, - 38D4BBA11D5A98D1001A30A0 /* ../MobileCenter/MobileCenter/MSService.h in Headers */, + 04A082061F74BB8600DC776D /* MSService.h in Headers */, E8E48F9E1D515C3900A8C1B0 /* MSSessionTracker.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/MobileCenterCrashes/MobileCenterCrashes.xcodeproj/project.pbxproj b/MobileCenterCrashes/MobileCenterCrashes.xcodeproj/project.pbxproj index 52831b7df4..07a77ab695 100644 --- a/MobileCenterCrashes/MobileCenterCrashes.xcodeproj/project.pbxproj +++ b/MobileCenterCrashes/MobileCenterCrashes.xcodeproj/project.pbxproj @@ -84,6 +84,9 @@ 0420A6981ECA7C1700915619 /* OCMock.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0420A68A1ECA7A9B00915619 /* OCMock.framework */; }; 04311FFC1EE08885007054C5 /* MSCrashReporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 04311FFB1EE08885007054C5 /* MSCrashReporter.h */; }; 04311FFD1EE08898007054C5 /* MSCrashReporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 04311FFB1EE08885007054C5 /* MSCrashReporter.h */; }; + 043281651F74A673002F7205 /* MSMockUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 043281621F74A665002F7205 /* MSMockUserDefaults.m */; }; + 043281661F74A675002F7205 /* MSMockUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 043281621F74A665002F7205 /* MSMockUserDefaults.m */; }; + 043281671F74A677002F7205 /* MSMockUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 043281621F74A665002F7205 /* MSMockUserDefaults.m */; }; 0446DF691F3B977100C8E338 /* MSAppleErrorLogTests.m in Sources */ = {isa = PBXBuildFile; fileRef = B2FF130B1DD12F61003DC677 /* MSAppleErrorLogTests.m */; }; 0446DF6A1F3B977100C8E338 /* MSCrashesTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 6EC99A2D1D4166C50016C325 /* MSCrashesTests.mm */; }; 0446DF6B1F3B977100C8E338 /* MSWrapperExceptionTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 350B29F31F1E6F1D009B91CF /* MSWrapperExceptionTests.m */; }; @@ -144,7 +147,6 @@ 0485AFAE1EAA887500C10CAF /* MSCrashesUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E73FE6E1D4032AB008CDC15 /* MSCrashesUtil.m */; }; 0485AFAF1EAA887500C10CAF /* MSBinary.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E7D5C661D3E9321009EC9AC /* MSBinary.m */; }; 0485AFB41EAA887500C10CAF /* MSWrapperExceptionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 35D504CD1DDD140500D58B40 /* MSWrapperExceptionManager.h */; }; - 0485AFB51EAA887500C10CAF /* MSErrorBinaryAttachmentPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 044C45FA1DB6EC1C00F3C29E /* MSErrorBinaryAttachmentPrivate.h */; }; 0485AFB61EAA887500C10CAF /* MSStackFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 3507AE3B1DD14C240030878F /* MSStackFrame.h */; }; 0485AFB71EAA887500C10CAF /* MSLogManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E8AEE9851D59744D00C0FF6C /* MSLogManager.h */; }; 0485AFB81EAA887500C10CAF /* MSBinary.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E7D5C651D3E9321009EC9AC /* MSBinary.h */; }; @@ -165,8 +167,6 @@ 0485AFC91EAA887500C10CAF /* MobileCenter+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E0401591D1C9D7F0051BCFA /* MobileCenter+Internal.h */; }; 0485AFCA1EAA887500C10CAF /* MSCrashesCXXExceptionWrapperException.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E73FE711D4059E7008CDC15 /* MSCrashesCXXExceptionWrapperException.h */; }; 0485AFCB1EAA887500C10CAF /* MSCrashesCXXExceptionHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E73FE681D402F79008CDC15 /* MSCrashesCXXExceptionHandler.h */; }; - 0485AFCC1EAA887500C10CAF /* ../MobileCenter/MobileCenter/MSService.h in Headers */ = {isa = PBXBuildFile; fileRef = 38D4BBA21D5A9962001A30A0 /* ../MobileCenter/MobileCenter/MSService.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0485AFCD1EAA887500C10CAF /* MSErrorAttachmentPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 044C45F81DB6EA0C00F3C29E /* MSErrorAttachmentPrivate.h */; }; 0485AFCE1EAA887500C10CAF /* MSCrashesDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = B2DCB1351DAC03C400120F87 /* MSCrashesDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; 0485AFCF1EAA887500C10CAF /* MSCrashesPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E0401521D1C9A4F0051BCFA /* MSCrashesPrivate.h */; }; 049327651ECA170D00D0187A /* MSAppleErrorLogTests.m in Sources */ = {isa = PBXBuildFile; fileRef = B2FF130B1DD12F61003DC677 /* MSAppleErrorLogTests.m */; }; @@ -216,6 +216,9 @@ 0499F8751EDFAE1D00C3EDDA /* MSErrorAttachmentLog+Utility.m in Sources */ = {isa = PBXBuildFile; fileRef = 3858A2191E93F3B400535A69 /* MSErrorAttachmentLog+Utility.m */; }; 0499F8761EDFAE3000C3EDDA /* MSLogWithProperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 380B81311E8C540E001C76C9 /* MSLogWithProperties.h */; }; 0499F8771EDFAE3500C3EDDA /* MSAbstractLog.h in Headers */ = {isa = PBXBuildFile; fileRef = 380B81331E8C565E001C76C9 /* MSAbstractLog.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 04A082021F74BB6100DC776D /* MSService.h in Headers */ = {isa = PBXBuildFile; fileRef = 04A082011F74BB6100DC776D /* MSService.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 04A082031F74BB6C00DC776D /* MSService.h in Headers */ = {isa = PBXBuildFile; fileRef = 04A082011F74BB6100DC776D /* MSService.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 04A082041F74BB6F00DC776D /* MSService.h in Headers */ = {isa = PBXBuildFile; fileRef = 04A082011F74BB6100DC776D /* MSService.h */; settings = {ATTRIBUTES = (Public, ); }; }; 04BED7231ECB65E100E20975 /* OCHamcrest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04BED7211ECB65DD00E20975 /* OCHamcrest.framework */; }; 04CC3B7B1F35282F00F7D92A /* MSWrapperCrashesHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 350B29F11F1D67EE009B91CF /* MSWrapperCrashesHelper.m */; }; 04CC3B7C1F35283000F7D92A /* MSWrapperCrashesHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 350B29F11F1D67EE009B91CF /* MSWrapperCrashesHelper.m */; }; @@ -249,7 +252,6 @@ 04EBBEBF1F01C0C90006B8AE /* MSCrashesUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E73FE6E1D4032AB008CDC15 /* MSCrashesUtil.m */; }; 04EBBEC01F01C0C90006B8AE /* MSBinary.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E7D5C661D3E9321009EC9AC /* MSBinary.m */; }; 04EBBEC41F01C0C90006B8AE /* MSWrapperExceptionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 35D504CD1DDD140500D58B40 /* MSWrapperExceptionManager.h */; }; - 04EBBEC51F01C0C90006B8AE /* MSErrorBinaryAttachmentPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 044C45FA1DB6EC1C00F3C29E /* MSErrorBinaryAttachmentPrivate.h */; }; 04EBBEC61F01C0C90006B8AE /* MSStackFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 3507AE3B1DD14C240030878F /* MSStackFrame.h */; }; 04EBBEC71F01C0C90006B8AE /* MSLogManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E8AEE9851D59744D00C0FF6C /* MSLogManager.h */; }; 04EBBEC81F01C0C90006B8AE /* MSBinary.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E7D5C651D3E9321009EC9AC /* MSBinary.h */; }; @@ -276,8 +278,6 @@ 04EBBEDD1F01C0C90006B8AE /* MSAbstractLog.h in Headers */ = {isa = PBXBuildFile; fileRef = 380B81331E8C565E001C76C9 /* MSAbstractLog.h */; settings = {ATTRIBUTES = (Public, ); }; }; 04EBBEDE1F01C0C90006B8AE /* MSCrashesCXXExceptionWrapperException.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E73FE711D4059E7008CDC15 /* MSCrashesCXXExceptionWrapperException.h */; }; 04EBBEDF1F01C0C90006B8AE /* MSCrashesCXXExceptionHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E73FE681D402F79008CDC15 /* MSCrashesCXXExceptionHandler.h */; }; - 04EBBEE01F01C0C90006B8AE /* ../MobileCenter/MobileCenter/MSService.h in Headers */ = {isa = PBXBuildFile; fileRef = 38D4BBA21D5A9962001A30A0 /* ../MobileCenter/MobileCenter/MSService.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 04EBBEE11F01C0C90006B8AE /* MSErrorAttachmentPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 044C45F81DB6EA0C00F3C29E /* MSErrorAttachmentPrivate.h */; }; 04EBBEE21F01C0C90006B8AE /* MSCrashesDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = B2DCB1351DAC03C400120F87 /* MSCrashesDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; 04EBBEE31F01C0C90006B8AE /* MSErrorAttachmentLogInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 382346411E8B3DAD001C3A76 /* MSErrorAttachmentLogInternal.h */; }; 04EBBEE41F01C0C90006B8AE /* MSCrashesPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E0401521D1C9A4F0051BCFA /* MSCrashesPrivate.h */; }; @@ -302,7 +302,6 @@ 3858A21A1E93F3B400535A69 /* MSErrorAttachmentLog+Utility.m in Sources */ = {isa = PBXBuildFile; fileRef = 3858A2191E93F3B400535A69 /* MSErrorAttachmentLog+Utility.m */; }; 387C77071D6CC41100D68CC1 /* MSServiceAbstract.h in Headers */ = {isa = PBXBuildFile; fileRef = 387C77061D6CC41100D68CC1 /* MSServiceAbstract.h */; settings = {ATTRIBUTES = (Public, ); }; }; 38BD86521E8499EF004E8D7A /* MSErrorAttachmentLog.h in Headers */ = {isa = PBXBuildFile; fileRef = 38BD86511E8499EF004E8D7A /* MSErrorAttachmentLog.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 38D4BBA31D5A9962001A30A0 /* ../MobileCenter/MobileCenter/MSService.h in Headers */ = {isa = PBXBuildFile; fileRef = 38D4BBA21D5A9962001A30A0 /* ../MobileCenter/MobileCenter/MSService.h */; settings = {ATTRIBUTES = (Public, ); }; }; 5949328B0C188C5B6624AAC2 /* MSCrashesUtilTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 59493B275715F01438B2E6FD /* MSCrashesUtilTests.m */; }; 6E0401541D1C9A4F0051BCFA /* MSCrashes.mm in Sources */ = {isa = PBXBuildFile; fileRef = 6E0401501D1C9A4F0051BCFA /* MSCrashes.mm */; }; 6E0401751D1C9E750051BCFA /* MobileCenterCrashes.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E0401361D1C98690051BCFA /* MobileCenterCrashes.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -464,12 +463,12 @@ 0420A68C1ECA7AA800915619 /* OCMock.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OCMock.framework; path = ../../macOS/OCMock/OCMock.framework; sourceTree = ""; }; 04311FF41EE08697007054C5 /* MSTestFrameworks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MSTestFrameworks.h; path = ../../MobileCenter/MobileCenterTests/Util/MSTestFrameworks.h; sourceTree = ""; }; 04311FFB1EE08885007054C5 /* MSCrashReporter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MSCrashReporter.h; sourceTree = ""; }; + 043281611F74A665002F7205 /* MSMockUserDefaults.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MSMockUserDefaults.h; path = ../../MobileCenter/MobileCenterTests/Util/MSMockUserDefaults.h; sourceTree = ""; }; + 043281621F74A665002F7205 /* MSMockUserDefaults.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MSMockUserDefaults.m; path = ../../MobileCenter/MobileCenterTests/Util/MSMockUserDefaults.m; sourceTree = ""; }; 0446DF9D1F3B977100C8E338 /* MobileCenterCrashes.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MobileCenterCrashes.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 0446DFA41F3B986B00C8E338 /* libMobileCenter.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libMobileCenter.a; path = "../../../../../Library/Developer/Xcode/DerivedData/MobileCenter-atgozldoovnqvrcmynluxwlivwkq/Build/Products/Debug-appletvsimulator/libMobileCenter.a"; sourceTree = ""; }; 0446DFA91F3B98A300C8E338 /* libMobileCenter.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libMobileCenter.a; path = "../../../../../Library/Developer/Xcode/DerivedData/MobileCenter-atgozldoovnqvrcmynluxwlivwkq/Build/Products/Debug-iphonesimulator/libMobileCenter.a"; sourceTree = ""; }; 0446DFAB1F3B98A800C8E338 /* libMobileCenter.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libMobileCenter.a; path = "../../../../../Library/Developer/Xcode/DerivedData/MobileCenter-atgozldoovnqvrcmynluxwlivwkq/Build/Products/Debug/libMobileCenter.a"; sourceTree = ""; }; - 044C45F81DB6EA0C00F3C29E /* MSErrorAttachmentPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MSErrorAttachmentPrivate.h; sourceTree = ""; }; - 044C45FA1DB6EC1C00F3C29E /* MSErrorBinaryAttachmentPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MSErrorBinaryAttachmentPrivate.h; sourceTree = ""; }; 0469D1B31F4E013C00A43A8E /* MobileCenterCrashes Release.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = "MobileCenterCrashes Release.xcconfig"; sourceTree = ""; }; 0484DD1A1F39091D0092B777 /* OCHamcrest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OCHamcrest.framework; path = ../../Vendor/tvOS/OCHamcrest/OCHamcrest.framework; sourceTree = ""; }; 0484DD1C1F39092A0092B777 /* OCMock.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OCMock.framework; path = ../../tvOS/OCMock/OCMock.framework; sourceTree = ""; }; @@ -502,6 +501,7 @@ 049553051EF19F9F0097E071 /* MSCrashesUtilPrivate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MSCrashesUtilPrivate.h; sourceTree = ""; }; 049BC8251ECE36D400FB6719 /* iOS.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = iOS.xcconfig; sourceTree = ""; }; 049BC8261ECE370100FB6719 /* macOS.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = macOS.xcconfig; sourceTree = ""; }; + 04A082011F74BB6100DC776D /* MSService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MSService.h; path = ../MobileCenter/MobileCenter/MSService.h; sourceTree = ""; }; 04BED7211ECB65DD00E20975 /* OCHamcrest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OCHamcrest.framework; path = ../../Vendor/macOS/OCHamcrest/OCHamcrest.framework; sourceTree = ""; }; 04EBBEAE1F01C0B50006B8AE /* CrashReporter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CrashReporter.framework; path = ../Vendor/tvOS/PLCrashReporter/CrashReporter.framework; sourceTree = ""; }; 04EBBEE81F01C0C90006B8AE /* libMobileCenterCrashes.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libMobileCenterCrashes.a; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -531,7 +531,6 @@ 3858A2191E93F3B400535A69 /* MSErrorAttachmentLog+Utility.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MSErrorAttachmentLog+Utility.m"; sourceTree = ""; }; 387C77061D6CC41100D68CC1 /* MSServiceAbstract.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MSServiceAbstract.h; path = ../MobileCenter/MobileCenter/MSServiceAbstract.h; sourceTree = ""; }; 38BD86511E8499EF004E8D7A /* MSErrorAttachmentLog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MSErrorAttachmentLog.h; sourceTree = ""; }; - 38D4BBA21D5A9962001A30A0 /* ../MobileCenter/MobileCenter/MSService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ../MobileCenter/MobileCenter/MSService.h; sourceTree = ""; }; 59493B275715F01438B2E6FD /* MSCrashesUtilTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MSCrashesUtilTests.m; sourceTree = ""; }; 6E0401331D1C98690051BCFA /* libMobileCenterCrashes.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libMobileCenterCrashes.a; sourceTree = BUILT_PRODUCTS_DIR; }; 6E0401361D1C98690051BCFA /* MobileCenterCrashes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MobileCenterCrashes.h; sourceTree = ""; }; @@ -769,6 +768,8 @@ children = ( B2A0A71A1D9C2AE700729A58 /* MSCrashesTestUtil.h */, B2A0A71B1D9C2AE700729A58 /* MSCrashesTestUtil.m */, + 043281611F74A665002F7205 /* MSMockUserDefaults.h */, + 043281621F74A665002F7205 /* MSMockUserDefaults.m */, 04311FF41EE08697007054C5 /* MSTestFrameworks.h */, ); name = Util; @@ -857,6 +858,7 @@ 380B81331E8C565E001C76C9 /* MSAbstractLog.h */, E8AEE9851D59744D00C0FF6C /* MSLogManager.h */, 380B81311E8C540E001C76C9 /* MSLogWithProperties.h */, + 04A082011F74BB6100DC776D /* MSService.h */, 387C77061D6CC41100D68CC1 /* MSServiceAbstract.h */, 6E0401351D1C98690051BCFA /* MobileCenterCrashes */, 6E171AE21D22F781000DC480 /* MobileCenterCrashesTests */, @@ -1072,9 +1074,9 @@ buildActionMask = 2147483647; files = ( 0485AFB41EAA887500C10CAF /* MSWrapperExceptionManager.h in Headers */, - 0485AFB51EAA887500C10CAF /* MSErrorBinaryAttachmentPrivate.h in Headers */, 0485AFB61EAA887500C10CAF /* MSStackFrame.h in Headers */, 0485AFB71EAA887500C10CAF /* MSLogManager.h in Headers */, + 04A082031F74BB6C00DC776D /* MSService.h in Headers */, 0485AFB81EAA887500C10CAF /* MSBinary.h in Headers */, 0485AFB91EAA887500C10CAF /* MSCrashes.h in Headers */, 04CC3B811F35284D00F7D92A /* MSWrapperExceptionInternal.h in Headers */, @@ -1102,9 +1104,7 @@ 0485AFCA1EAA887500C10CAF /* MSCrashesCXXExceptionWrapperException.h in Headers */, 0485AFCB1EAA887500C10CAF /* MSCrashesCXXExceptionHandler.h in Headers */, 04CC3B7D1F35284300F7D92A /* MSWrapperException.h in Headers */, - 0485AFCC1EAA887500C10CAF /* ../MobileCenter/MobileCenter/MSService.h in Headers */, 04CC3B871F3528C300F7D92A /* MSCrashHandlerSetupDelegate.h in Headers */, - 0485AFCD1EAA887500C10CAF /* MSErrorAttachmentPrivate.h in Headers */, 0485AFCE1EAA887500C10CAF /* MSCrashesDelegate.h in Headers */, 041EFD3F1EE205D8006DCD56 /* MSErrorAttachmentLogInternal.h in Headers */, 0485AFCF1EAA887500C10CAF /* MSCrashesPrivate.h in Headers */, @@ -1116,9 +1116,9 @@ buildActionMask = 2147483647; files = ( 04EBBEC41F01C0C90006B8AE /* MSWrapperExceptionManager.h in Headers */, - 04EBBEC51F01C0C90006B8AE /* MSErrorBinaryAttachmentPrivate.h in Headers */, 04EBBEC61F01C0C90006B8AE /* MSStackFrame.h in Headers */, 04EBBEC71F01C0C90006B8AE /* MSLogManager.h in Headers */, + 04A082041F74BB6F00DC776D /* MSService.h in Headers */, 04EBBEC81F01C0C90006B8AE /* MSBinary.h in Headers */, 04EBBEC91F01C0C90006B8AE /* MSCrashes.h in Headers */, 04CC3B821F35284E00F7D92A /* MSWrapperExceptionInternal.h in Headers */, @@ -1146,9 +1146,7 @@ 04EBBEDE1F01C0C90006B8AE /* MSCrashesCXXExceptionWrapperException.h in Headers */, 04EBBEDF1F01C0C90006B8AE /* MSCrashesCXXExceptionHandler.h in Headers */, 04CC3B7E1F35284400F7D92A /* MSWrapperException.h in Headers */, - 04EBBEE01F01C0C90006B8AE /* ../MobileCenter/MobileCenter/MSService.h in Headers */, 04CC3B881F3528C400F7D92A /* MSCrashHandlerSetupDelegate.h in Headers */, - 04EBBEE11F01C0C90006B8AE /* MSErrorAttachmentPrivate.h in Headers */, 04EBBEE21F01C0C90006B8AE /* MSCrashesDelegate.h in Headers */, 04EBBEE31F01C0C90006B8AE /* MSErrorAttachmentLogInternal.h in Headers */, 04EBBEE41F01C0C90006B8AE /* MSCrashesPrivate.h in Headers */, @@ -1162,6 +1160,7 @@ 3507AE3E1DD14C240030878F /* MSStackFrame.h in Headers */, E8AEE9861D59744D00C0FF6C /* MSLogManager.h in Headers */, 6E7D5C671D3E9321009EC9AC /* MSBinary.h in Headers */, + 04A082021F74BB6100DC776D /* MSService.h in Headers */, 6E0401761D1C9E750051BCFA /* MSCrashes.h in Headers */, B2F120E41D657CF10060DED7 /* MSErrorReport.h in Headers */, 35B7D87A1DE4D4A300C846CD /* MSWrapperExceptionManagerInternal.h in Headers */, @@ -1190,7 +1189,6 @@ 6E0401771D1C9EBE0051BCFA /* MobileCenter+Internal.h in Headers */, 6E73FE731D4059E7008CDC15 /* MSCrashesCXXExceptionWrapperException.h in Headers */, 6E73FE6A1D402F79008CDC15 /* MSCrashesCXXExceptionHandler.h in Headers */, - 38D4BBA31D5A9962001A30A0 /* ../MobileCenter/MobileCenter/MSService.h in Headers */, 380B81321E8C540E001C76C9 /* MSLogWithProperties.h in Headers */, B2DCB1361DAC03C400120F87 /* MSCrashesDelegate.h in Headers */, 6E0401781D1C9EBE0051BCFA /* MSCrashesPrivate.h in Headers */, @@ -1534,6 +1532,7 @@ 0446DF6C1F3B977100C8E338 /* MSExceptionTests.m in Sources */, 0446DF6D1F3B977100C8E338 /* MSErrorReportTests.m in Sources */, 0446DF6E1F3B977100C8E338 /* MSWrapperCrashesHelperTests.m in Sources */, + 043281671F74A677002F7205 /* MSMockUserDefaults.m in Sources */, 0446DF6F1F3B977100C8E338 /* MSStackFrameTests.m in Sources */, 0446DF701F3B977100C8E338 /* MSCrashesCXXExceptionTests.mm in Sources */, 0446DF711F3B977100C8E338 /* MSThreadTests.m in Sources */, @@ -1583,6 +1582,7 @@ 049327671ECA170D00D0187A /* MSExceptionTests.m in Sources */, 049327681ECA170D00D0187A /* MSErrorReportTests.m in Sources */, 04CC3B8A1F3528E200F7D92A /* MSWrapperCrashesHelperTests.m in Sources */, + 043281661F74A675002F7205 /* MSMockUserDefaults.m in Sources */, 049327691ECA170D00D0187A /* MSStackFrameTests.m in Sources */, 0493276A1ECA170D00D0187A /* MSCrashesCXXExceptionTests.mm in Sources */, 0493276B1ECA170D00D0187A /* MSThreadTests.m in Sources */, @@ -1657,6 +1657,7 @@ 6E7D5C8A1D3EC504009EC9AC /* MSExceptionTests.m in Sources */, B2F120D71D65469D0060DED7 /* MSErrorReportTests.m in Sources */, 352B1D6F1F27C36300684A7F /* MSWrapperCrashesHelperTests.m in Sources */, + 043281651F74A673002F7205 /* MSMockUserDefaults.m in Sources */, 6E7D5C871D3EC332009EC9AC /* MSStackFrameTests.m in Sources */, F851DAED1E81867D00525570 /* MSCrashesCXXExceptionTests.mm in Sources */, 6E7D5C841D3EC0F7009EC9AC /* MSThreadTests.m in Sources */, diff --git a/MobileCenterCrashes/MobileCenterCrashesTests/MSErrorLogFormatterTests.mm b/MobileCenterCrashes/MobileCenterCrashesTests/MSErrorLogFormatterTests.mm index 20cb15bf2a..d3bb88f6d9 100644 --- a/MobileCenterCrashes/MobileCenterCrashesTests/MSErrorLogFormatterTests.mm +++ b/MobileCenterCrashes/MobileCenterCrashesTests/MSErrorLogFormatterTests.mm @@ -9,6 +9,7 @@ #import "MSErrorLogFormatterPrivate.h" #import "MSException.h" #import "MSMobileCenterInternal.h" +#import "MSMockUserDefaults.h" #import "MSTestFrameworks.h" #import "MSThread.h" @@ -30,6 +31,7 @@ - (void)testCreateErrorReport { NSData *crashData = [MSCrashesTestUtil dataOfFixtureCrashReportWithFileName:@"live_report_signal"]; XCTAssertNotNil(crashData); + MSMockUserDefaults *defaults = [MSMockUserDefaults new]; MSDevice *device = [MSDeviceTracker sharedInstance].device; XCTAssertNotNil(device); @@ -48,14 +50,6 @@ - (void)testCreateErrorReport { XCTAssertEqual([errorReport.appErrorTime timeIntervalSince1970], [crashReport.systemInfo.timestamp timeIntervalSince1970] + 0.999); assertThat(errorReport.appStartTime, equalTo(crashReport.processInfo.processStartTime)); - - /* - * FIXME: Crashes will look up a session from history to get an appropriate session at crash time. This causes - * intermittent failures due to osVersion mismatch depends on running sequence of the tests. If there is a history - * that was built by other tests, device property might have mocked data and this test will fail. To prevent this - * failure, it will force-assign osVersion from MSDevice to MSErrorReport. - */ - device.osVersion = errorReport.device.osVersion; XCTAssertTrue([errorReport.device isEqual:device]); XCTAssertEqual(errorReport.appProcessIdentifier, crashReport.processInfo.processID); @@ -76,16 +70,9 @@ - (void)testCreateErrorReport { XCTAssertEqual([errorReport.appErrorTime timeIntervalSince1970], [crashReport.systemInfo.timestamp timeIntervalSince1970] + 0.999); assertThat(errorReport.appStartTime, equalTo(crashReport.processInfo.processStartTime)); - - /* - * FIXME: Crashes will look up a session from history to get an appropriate session at crash time. This causes - * intermittent failures due to osVersion mismatch depends on running sequence of the tests. If there is a history - * that was built by other tests, device property might have mocked data and this test will fail. To prevent this - * failure, it will force-assign osVersion from MSDevice to MSErrorReport. - */ - device.osVersion = errorReport.device.osVersion; XCTAssertTrue([errorReport.device isEqual:device]); XCTAssertEqual(errorReport.appProcessIdentifier, crashReport.processInfo.processID); + [defaults stopMocking]; } - (void)testErrorIdFromCrashReport { diff --git a/MobileCenterDistribute/MobileCenterDistribute.xcodeproj/project.pbxproj b/MobileCenterDistribute/MobileCenterDistribute.xcodeproj/project.pbxproj index 70dac5a5f8..149fab8f22 100644 --- a/MobileCenterDistribute/MobileCenterDistribute.xcodeproj/project.pbxproj +++ b/MobileCenterDistribute/MobileCenterDistribute.xcodeproj/project.pbxproj @@ -50,7 +50,6 @@ 0471B9341E45560C0022F951 /* MSDistribute.h in Headers */ = {isa = PBXBuildFile; fileRef = 0471B89A1E4547750022F951 /* MSDistribute.h */; settings = {ATTRIBUTES = (Public, ); }; }; 0471B93C1E4557620022F951 /* MSServiceAbstract.h in Headers */ = {isa = PBXBuildFile; fileRef = 0471B93B1E4557620022F951 /* MSServiceAbstract.h */; settings = {ATTRIBUTES = (Public, ); }; }; 0471B93E1E4557820022F951 /* MSLogManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 0471B93D1E4557820022F951 /* MSLogManager.h */; }; - 0471B9441E455A0D0022F951 /* ../MobileCenter/MobileCenter/MSService.h in Headers */ = {isa = PBXBuildFile; fileRef = 0471B9431E455A0D0022F951 /* ../MobileCenter/MobileCenter/MSService.h */; settings = {ATTRIBUTES = (Public, ); }; }; 047D137F1EAFF87500D699BA /* MSReleaseDetailsPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 047D137E1EAFF87500D699BA /* MSReleaseDetailsPrivate.h */; }; 048BB3031E60A40D009D92C2 /* MSReleaseDetails.h in Headers */ = {isa = PBXBuildFile; fileRef = 048BB2FC1E60A40D009D92C2 /* MSReleaseDetails.h */; settings = {ATTRIBUTES = (Public, ); }; }; 048BB3041E60A40D009D92C2 /* MSReleaseDetails.m in Sources */ = {isa = PBXBuildFile; fileRef = 048BB2FD1E60A40D009D92C2 /* MSReleaseDetails.m */; }; @@ -58,6 +57,7 @@ 048BB3061E60A40D009D92C2 /* MSDistributionGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 048BB3001E60A40D009D92C2 /* MSDistributionGroup.m */; }; 048BB3071E60A40D009D92C2 /* MSDistributeSender.h in Headers */ = {isa = PBXBuildFile; fileRef = 048BB3011E60A40D009D92C2 /* MSDistributeSender.h */; }; 048BB3081E60A40D009D92C2 /* MSDistributeSender.m in Sources */ = {isa = PBXBuildFile; fileRef = 048BB3021E60A40D009D92C2 /* MSDistributeSender.m */; }; + 04A0820A1F74BBB100DC776D /* MSService.h in Headers */ = {isa = PBXBuildFile; fileRef = 04A082091F74BBB100DC776D /* MSService.h */; settings = {ATTRIBUTES = (Public, ); }; }; 04A140C91ECE89BD001CEE94 /* MSMockUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A140C61ECE89B2001CEE94 /* MSMockUserDefaults.m */; }; 04DC2EC91E78A3B4003F23B5 /* error_details.json in Resources */ = {isa = PBXBuildFile; fileRef = 04DC2EC81E78A3B4003F23B5 /* error_details.json */; }; 04DC2ECB1E78A3E3003F23B5 /* MSErrorDetailsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 04DC2ECA1E78A3E3003F23B5 /* MSErrorDetailsTests.m */; }; @@ -151,7 +151,6 @@ 0471B89A1E4547750022F951 /* MSDistribute.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MSDistribute.h; sourceTree = ""; }; 0471B93B1E4557620022F951 /* MSServiceAbstract.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MSServiceAbstract.h; path = ../MobileCenter/MobileCenter/MSServiceAbstract.h; sourceTree = ""; }; 0471B93D1E4557820022F951 /* MSLogManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MSLogManager.h; path = ../MobileCenter/MobileCenter/Internals/Channel/MSLogManager.h; sourceTree = ""; }; - 0471B9431E455A0D0022F951 /* ../MobileCenter/MobileCenter/MSService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ../MobileCenter/MobileCenter/MSService.h; sourceTree = ""; }; 047D137E1EAFF87500D699BA /* MSReleaseDetailsPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MSReleaseDetailsPrivate.h; sourceTree = ""; }; 048BB2FC1E60A40D009D92C2 /* MSReleaseDetails.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MSReleaseDetails.h; sourceTree = ""; }; 048BB2FD1E60A40D009D92C2 /* MSReleaseDetails.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MSReleaseDetails.m; sourceTree = ""; }; @@ -161,6 +160,7 @@ 048BB3021E60A40D009D92C2 /* MSDistributeSender.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MSDistributeSender.m; sourceTree = ""; }; 049BC8221ECE349200FB6719 /* iOS.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = iOS.xcconfig; sourceTree = ""; }; 049BC8271ECE387A00FB6719 /* iOS.modulemap */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = "sourcecode.module-map"; path = iOS.modulemap; sourceTree = ""; }; + 04A082091F74BBB100DC776D /* MSService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MSService.h; path = ../MobileCenter/MobileCenter/MSService.h; sourceTree = ""; }; 04A140C51ECE89B2001CEE94 /* MSMockUserDefaults.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MSMockUserDefaults.h; path = ../../../MobileCenter/MobileCenterTests/Util/MSMockUserDefaults.h; sourceTree = ""; }; 04A140C61ECE89B2001CEE94 /* MSMockUserDefaults.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MSMockUserDefaults.m; path = ../../../MobileCenter/MobileCenterTests/Util/MSMockUserDefaults.m; sourceTree = ""; }; 04DC2EC81E78A3B4003F23B5 /* error_details.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = error_details.json; sourceTree = ""; }; @@ -336,6 +336,7 @@ 04FD4A131E451E12009B4468 = { isa = PBXGroup; children = ( + 04A082091F74BBB100DC776D /* MSService.h */, 0471B93B1E4557620022F951 /* MSServiceAbstract.h */, 0471B93D1E4557820022F951 /* MSLogManager.h */, 040AF0321E52859F005C1174 /* MSSender.h */, @@ -473,7 +474,6 @@ 048BB3051E60A40D009D92C2 /* MSDistributionGroup.h in Headers */, 0471B93E1E4557820022F951 /* MSLogManager.h in Headers */, 38A683611E774D9F00A63BC8 /* MSSemVer.h in Headers */, - 0471B9441E455A0D0022F951 /* ../MobileCenter/MobileCenter/MSService.h in Headers */, 38C9C56C1E565BF600B0FA0D /* MSDistributePrivate.h in Headers */, B25895AA1E4E9FD400123632 /* MSDistributeInternal.h in Headers */, 0471B93C1E4557620022F951 /* MSServiceAbstract.h in Headers */, @@ -489,6 +489,7 @@ 388B559C1E64B3FD00E4F1D7 /* MSBasicMachOParser.h in Headers */, 047D137F1EAFF87500D699BA /* MSReleaseDetailsPrivate.h in Headers */, 046EF5891EAEB524002F6436 /* MSDistributeDelegate.h in Headers */, + 04A0820A1F74BBB100DC776D /* MSService.h in Headers */, BA682AC831677E0806CA2359 /* MSErrorDetails.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/MobileCenterDistribute/MobileCenterDistribute/MSDistribute.m b/MobileCenterDistribute/MobileCenterDistribute/MSDistribute.m index e5c466173a..55ad959ec8 100644 --- a/MobileCenterDistribute/MobileCenterDistribute/MSDistribute.m +++ b/MobileCenterDistribute/MobileCenterDistribute/MSDistribute.m @@ -219,28 +219,20 @@ - (void)requestInstallInformationWith:(NSString *)releaseHash { #pragma clang diagnostic ignored "-Wpartial-availability" Class clazz = [SFSafariViewController class]; if (clazz) { -#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_11_0 - if (@available(iOS 11.0, *)) { - // iOS 11 - Class authClazz = [SFAuthenticationSession class]; + // iOS 11 + Class authClazz = NSClassFromString(@"SFAuthenticationSession"); + if (authClazz) { dispatch_async(dispatch_get_main_queue(), ^{ [self openURLInAuthenticationSessionWith:url fromClass:authClazz]; }); } else { - // Compiling against iOS 11 but running on iOS 9 and 10. + // iOS 9 and 10 dispatch_async(dispatch_get_main_queue(), ^{ [self openURLInSafariViewControllerWith:url fromClass:clazz]; }); } -#else - - // The app is not compiled against the iOS 11 SDK, use the logic for iOS 9 and 10. - dispatch_async(dispatch_get_main_queue(), ^{ - [self openURLInSafariViewControllerWith:url fromClass:clazz]; - }); -#endif } else { // iOS 8.x. @@ -457,36 +449,57 @@ - (nullable NSURL *)buildTokenRequestURLWithAppSecret:(NSString *)appSecret rele return components.URL; } -#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_11_0 -- (void)openURLInAuthenticationSessionWith:(NSURL *)url fromClass:(Class)clazz { +- (void)openURLInAuthenticationSessionWith:(NSURL *)url fromClass:(Class)sessionClazz { MSLogDebug([MSDistribute logTag], @"Using SFAuthenticationSession to open URL: %@", url); NSString *callbackUrlScheme = [NSString stringWithFormat:kMSDefaultCustomSchemeFormat, self.appSecret]; - if (@available(iOS 11.0, *)) { - SFAuthenticationSession *session = [[clazz alloc] - initWithURL:url - callbackURLScheme:callbackUrlScheme - completionHandler:^(NSURL *callbackUrl, NSError *error) { - - self.authenticationSession = nil; - if (error != nil) { - MSLogDebug([MSDistribute logTag], @"Called %@ with errror: %@", callbackUrl, error.localizedDescription); - } - if (error.code == SFAuthenticationErrorCanceledLogin) { - MSLogError([MSDistribute logTag], @"Authentication session was cancelled by user or failed."); - } - if (callbackUrl) { - [self openURL:callbackUrl]; - } - }]; + + // Check once more if we have the correct class. + if (sessionClazz) { + + id session = [sessionClazz alloc]; + + // Create selector for [instanceOfSFAuthenticationSession initWithURL: callbackURLScheme: completionHandler:]. + SEL initSelector = NSSelectorFromString(@"initWithURL:callbackURLScheme:completionHandler:"); + + // The completion block that we need to invoke. + typedef void (^MSCompletionBlockForAuthSession)(NSURL *callbackUrl, NSError *error); + MSCompletionBlockForAuthSession authCompletionBlock = ^(NSURL *callbackUrl, NSError *error) { + self.authenticationSession = nil; + if (error != nil) { + MSLogDebug([MSDistribute logTag], @"Called %@ with errror: %@", callbackUrl, error.localizedDescription); + } + + // This is error.code == SFAuthenticationErrorCanceledLogin which we can't use to retain backward compatibility. + if (error.code == 1) { + MSLogError([MSDistribute logTag], @"Authentication session was cancelled by user or failed."); + } + if (callbackUrl) { + [self openURL:callbackUrl]; + } + }; + + // Initialize the SFAuthenticationsession. + typedef void (*MSInitSFAuthenticationSession)(id, SEL, NSURL *, NSString *, MSCompletionBlockForAuthSession); + MSInitSFAuthenticationSession initMethodCall; + initMethodCall = (MSInitSFAuthenticationSession)[session methodForSelector:initSelector]; + initMethodCall(session, initSelector, url, callbackUrlScheme, authCompletionBlock); + + // Retain the session. self.authenticationSession = session; - BOOL success = [session start]; + // Create selector for [instanceOfSFAuthenticationSession start]. + SEL startSelector = NSSelectorFromString(@"start"); + + // Call [SFAuthenticationSession start] dynamically. + typedef BOOL (*MSStartSFAuthenticationSession)(id, SEL); + MSStartSFAuthenticationSession startMethodCall; + startMethodCall = (MSStartSFAuthenticationSession)[session methodForSelector:startSelector]; + BOOL success = startMethodCall(session, @selector(start)); if (success) { MSLogDebug([MSDistribute logTag], @"Authentication Session Started, showing confirmation dialog"); } } } -#endif - (void)openURLInSafariViewControllerWith:(NSURL *)url fromClass:(Class)clazz { MSLogDebug([MSDistribute logTag], @"Using SFSafariViewController to open URL: %@", url); diff --git a/MobileCenterDistribute/MobileCenterDistribute/MSDistributePrivate.h b/MobileCenterDistribute/MobileCenterDistribute/MSDistributePrivate.h index 1634414eb8..8ce030773d 100644 --- a/MobileCenterDistribute/MobileCenterDistribute/MSDistributePrivate.h +++ b/MobileCenterDistribute/MobileCenterDistribute/MSDistributePrivate.h @@ -109,12 +109,7 @@ static NSString *const kMSDistributionGroupIdKey = @"MSDistributionGroupId"; */ @property(nonatomic) id appDelegate; -#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_11_0 -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wpartial-availability" -@property(nullable, nonatomic) SFAuthenticationSession *authenticationSession; -#pragma clang diagnostic pop -#endif +@property(nonatomic) id _Nullable authenticationSession; /** * Returns the singleton instance. Meant for testing/demo apps only. @@ -133,15 +128,13 @@ static NSString *const kMSDistributionGroupIdKey = @"MSDistributionGroupId"; */ - (nullable NSURL *)buildTokenRequestURLWithAppSecret:(NSString *)appSecret releaseHash:(NSString *)releaseHash; -#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_11_0 /** * Open the given URL using an `SFAuthenticationSession`. Must run on the UI thread! iOS 11 only. * * @param url URL to open. - * @param clazz `SFAuthenticationSession` class. + * @param sessionClazz `SFAuthenticationSession` class. */ -- (void)openURLInAuthenticationSessionWith:(NSURL *)url fromClass:(Class)clazz; -#endif +- (void)openURLInAuthenticationSessionWith:(NSURL *)url fromClass:(Class)sessionClazz; /** * Open the given URL using an `SFSafariViewController`. Must run on the UI thread! iOS 9 and 10 only. diff --git a/MobileCenterPush/MobileCenterPush.xcodeproj/project.pbxproj b/MobileCenterPush/MobileCenterPush.xcodeproj/project.pbxproj index 602f2b9687..40e95f6d36 100644 --- a/MobileCenterPush/MobileCenterPush.xcodeproj/project.pbxproj +++ b/MobileCenterPush/MobileCenterPush.xcodeproj/project.pbxproj @@ -57,7 +57,6 @@ /* Begin PBXBuildFile section */ 0420A6A21ECA7D7200915619 /* OCMock.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0420A6A11ECA7D7200915619 /* OCMock.framework */; }; - 046964081F2A558300F9D31F /* ../MobileCenter/MobileCenter/MSService.h in Headers */ = {isa = PBXBuildFile; fileRef = 38D4BB9F1D5A98D1001A30A0 /* ../MobileCenter/MobileCenter/MSService.h */; settings = {ATTRIBUTES = (Public, ); }; }; 0469643A1F2A56F400F9D31F /* OCMock.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 046964371F2A56DF00F9D31F /* OCMock.framework */; }; 0469643D1F2A570500F9D31F /* OCHamcrest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0469643B1F2A570000F9D31F /* OCHamcrest.framework */; }; 046964401F2A572800F9D31F /* libMobileCenter.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0469643F1F2A572800F9D31F /* libMobileCenter.a */; }; @@ -86,9 +85,10 @@ 04873E851F2FD0B600A13AFF /* MSPushAppDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 382144391EC4D3EC009A6143 /* MSPushAppDelegate.h */; }; 04873E861F2FD0D900A13AFF /* MSPushAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 3821443A1EC4D3EC009A6143 /* MSPushAppDelegate.m */; }; 0496A67B1F3128CE005AE1DB /* MSPushTests.m in Sources */ = {isa = PBXBuildFile; fileRef = D3AD5EC21E5C4F6A001627AB /* MSPushTests.m */; }; + 04A0820C1F74BBCA00DC776D /* MSService.h in Headers */ = {isa = PBXBuildFile; fileRef = 04A0820B1F74BBCA00DC776D /* MSService.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 04A0820D1F74BBCF00DC776D /* MSService.h in Headers */ = {isa = PBXBuildFile; fileRef = 04A0820B1F74BBCA00DC776D /* MSService.h */; settings = {ATTRIBUTES = (Public, ); }; }; 3821443B1EC4D3EC009A6143 /* MSPushAppDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 382144391EC4D3EC009A6143 /* MSPushAppDelegate.h */; }; 3821443C1EC4D3EC009A6143 /* MSPushAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 3821443A1EC4D3EC009A6143 /* MSPushAppDelegate.m */; }; - 38D4BBA11D5A98D1001A30A0 /* ../MobileCenter/MobileCenter/MSService.h in Headers */ = {isa = PBXBuildFile; fileRef = 38D4BB9F1D5A98D1001A30A0 /* ../MobileCenter/MobileCenter/MSService.h */; settings = {ATTRIBUTES = (Public, ); }; }; D38023C11E6DE01700466558 /* UserNotifications.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D38023C01E6DE01700466558 /* UserNotifications.framework */; }; D39B04E41E66FBD50048E397 /* MSPushTestUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = D39B04E31E66FBD50048E397 /* MSPushTestUtil.m */; }; D3AD5EC51E5C4F6A001627AB /* libMobileCenterPush.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D33A94511E5B11BB003966DB /* libMobileCenterPush.a */; }; @@ -176,9 +176,9 @@ 047919B81EBA4C44004834A6 /* MSPushNotificationInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MSPushNotificationInternal.h; path = Model/MSPushNotificationInternal.h; sourceTree = ""; }; 04849D781E9E913A0093ECA6 /* MSPushLogTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MSPushLogTests.m; sourceTree = ""; }; 049BC81E1ECE333700FB6719 /* iOS.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = iOS.xcconfig; sourceTree = ""; }; + 04A0820B1F74BBCA00DC776D /* MSService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MSService.h; path = ../MobileCenter/MobileCenter/MSService.h; sourceTree = ""; }; 382144391EC4D3EC009A6143 /* MSPushAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MSPushAppDelegate.h; sourceTree = ""; }; 3821443A1EC4D3EC009A6143 /* MSPushAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MSPushAppDelegate.m; sourceTree = ""; }; - 38D4BB9F1D5A98D1001A30A0 /* ../MobileCenter/MobileCenter/MSService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ../MobileCenter/MobileCenter/MSService.h; sourceTree = ""; }; D33A94511E5B11BB003966DB /* libMobileCenterPush.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libMobileCenterPush.a; sourceTree = BUILT_PRODUCTS_DIR; }; D33A94541E5B11BB003966DB /* MobileCenterPush.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MobileCenterPush.h; sourceTree = ""; }; D38023C01E6DE01700466558 /* UserNotifications.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UserNotifications.framework; path = System/Library/Frameworks/UserNotifications.framework; sourceTree = SDKROOT; }; @@ -303,6 +303,7 @@ D33A94481E5B11BB003966DB = { isa = PBXGroup; children = ( + 04A0820B1F74BBCA00DC776D /* MSService.h */, D3AD5EFE1E5C7DAE001627AB /* MSServiceAbstract.h */, D3AD5EFF1E5C7E40001627AB /* MSLogManager.h */, D33A94531E5B11BB003966DB /* MobileCenterPush */, @@ -442,7 +443,7 @@ 0469644D1F2A5D1200F9D31F /* MSPushPrivate.h in Headers */, 0469644E1F2A5D2800F9D31F /* MobileCenterPush.h in Headers */, 046964461F2A5B4900F9D31F /* MSPushNotification.h in Headers */, - 046964081F2A558300F9D31F /* ../MobileCenter/MobileCenter/MSService.h in Headers */, + 04A0820D1F74BBCF00DC776D /* MSService.h in Headers */, 046964441F2A5B3E00F9D31F /* MSPushLog.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; @@ -461,7 +462,7 @@ D3AD5F121E5C847B001627AB /* MSPushPrivate.h in Headers */, D3AD5F6C1E5D7464001627AB /* MSPushLog.h in Headers */, 047919B31EBA3AC5004834A6 /* MSPushNotification.h in Headers */, - 38D4BBA11D5A98D1001A30A0 /* ../MobileCenter/MobileCenter/MSService.h in Headers */, + 04A0820C1F74BBCA00DC776D /* MSService.h in Headers */, D3AD5F0E1E5C8452001627AB /* MSLogManager.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0;