Skip to content
This repository was archived by the owner on Feb 15, 2022. It is now read-only.

Commit 19b6f1a

Browse files
authored
Merge pull request #206 from Lickability/hides-logging
Hides Default Logging Capabilities on iOS 10+
2 parents d8b942c + c182459 commit 19b6f1a

File tree

3 files changed

+30
-12
lines changed

3 files changed

+30
-12
lines changed

PinpointKit/PinpointKit/Sources/Core/FeedbackTableViewDataSource.swift

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,15 +47,21 @@ final class FeedbackTableViewDataSource: NSObject, UITableViewDataSource {
4747
// MARK: - FeedbackTableViewDataSource
4848

4949
private static func sectionsFromConfiguration(_ interfaceCustomization: InterfaceCustomization, screenshot: UIImage, logSupporting: LogSupporting, userEnabledLogCollection: Bool) -> [Section] {
50-
guard logSupporting.logCollector != nil else { return [] }
50+
var sections: [Section] = []
5151

5252
let screenshotRow = Row.screenshot(screensot: screenshot, hintText: interfaceCustomization.interfaceText.feedbackEditHint, hintFont: interfaceCustomization.appearance.feedbackEditHintFont)
5353
let screenshotSection = Section.feedback(rows: [screenshotRow])
5454

55-
let collectLogsRow = Row.collectLogs(enabled: userEnabledLogCollection, title: interfaceCustomization.interfaceText.logCollectionPermissionTitle, font: interfaceCustomization.appearance.logCollectionPermissionFont, canView: logSupporting.logViewer != nil)
56-
let collectLogsSection = Section.feedback(rows: [collectLogsRow])
55+
sections.append(screenshotSection)
5756

58-
return [screenshotSection, collectLogsSection]
57+
if logSupporting.logCollector != nil {
58+
let collectLogsRow = Row.collectLogs(enabled: userEnabledLogCollection, title: interfaceCustomization.interfaceText.logCollectionPermissionTitle, font: interfaceCustomization.appearance.logCollectionPermissionFont, canView: logSupporting.logViewer != nil)
59+
let collectLogsSection = Section.feedback(rows: [collectLogsRow])
60+
61+
sections.append(collectLogsSection)
62+
}
63+
64+
return sections
5965
}
6066

6167
private func checkmarkCell(for row: Row) -> CheckmarkCell {

PinpointKit/PinpointKit/Sources/Core/SystemLogCollector.swift

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,19 @@ open class SystemLogCollector: LogCollector {
2222

2323
private let logger: ASLLogger
2424

25-
public init(loggingType: LoggingType = .application) {
25+
/**
26+
Creates a new system logger.
27+
28+
- parameter loggingType: Specifies the type of logs to collect.
29+
30+
- warning: This initializer returns `nil` on iOS 10.0+. When running on iOS 10.0+, ASL is superseded by unified logging, for which there are no APIs to search or read log messages.
31+
- seealso: https://developer.apple.com/reference/os/logging
32+
*/
33+
public init?(loggingType: LoggingType = .application) {
34+
if #available(iOS 10.0, *), loggingType == .application {
35+
return nil
36+
}
37+
2638
switch loggingType {
2739
case .application:
2840
logger = ASLLogger(bundleIdentifier: Bundle.main.bundleIdentifier ?? "")

PinpointKit/PinpointKitTests/SystemLogCollectorTests.swift

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ class SystemLogCollectorTests: XCTestCase {
2323

2424
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + .seconds(1)) {
2525

26-
let logs = systemLogCollector.retrieveLogs()
26+
let systemLogs = systemLogCollector?.retrieveLogs()
2727

28-
guard let firstLog = logs.first else { return XCTFail("There should be at least 1 log.") }
28+
guard let logs = systemLogs, let firstLog = logs.first else { return XCTFail("There should be at least 1 log.") }
2929

3030
XCTAssertEqual(logs.count, 3)
3131
XCTAssertTrue(firstLog.contains(testString))
@@ -49,9 +49,9 @@ class SystemLogCollectorTests: XCTestCase {
4949
let expectation = defaultExpectation()
5050

5151
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + .seconds(1)) {
52-
let logs = systemLogCollector.retrieveLogs()
52+
let systemLogs = systemLogCollector?.retrieveLogs()
5353

54-
guard logs.count == 3 else { return XCTFail("Count should be 3.") }
54+
guard let logs = systemLogs, logs.count == 3 else { return XCTFail("Count should be 3.") }
5555

5656
let firstLog = logs[0]
5757
let secondLog = logs[1]
@@ -74,14 +74,14 @@ class SystemLogCollectorTests: XCTestCase {
7474

7575
let systemLogCollector = SystemLogCollector(loggingType: .testing)
7676

77-
XCTAssertEqual(systemLogCollector.retrieveLogs().count, 0)
77+
XCTAssertEqual(systemLogCollector?.retrieveLogs().count, 0)
7878
}
7979

8080
func testLogCollectorHasNoLogsInitially() {
8181
let systemLogCollector = SystemLogCollector(loggingType: .testing)
8282

83-
let logs = systemLogCollector.retrieveLogs()
83+
let logs = systemLogCollector?.retrieveLogs()
8484

85-
XCTAssertEqual(logs.count, 0)
85+
XCTAssertEqual(logs?.count, 0)
8686
}
8787
}

0 commit comments

Comments
 (0)