В одном из моих приложений в прошлом я мог разрешать пользователям экспортировать журналы CocoaLumberjack с устройства, используя UIActivityViewController
, передавая массив URL-адресов файлов, указывающих на журналы на устройстве пользователя.
Однако, хотя я (кажется, я) перенес тот же код из моего старого приложения, я не могу получить какие-либо параметры для отображения в UIActivityViewController ни на устройстве, ни на симуляторе.Все, что я получаю, это «больше»:
В моем другом приложении я получаю опции для обмена в Slack, Mail, Files и т. Д., Как и большинство других файлов.
Чтобы попытаться понять, что я делаю неправильно, я создал пример проекта, но у меня все еще возникает та же проблема.Код очень прост, так что теперь я в растерянности из-за того, что может быть проблемой, я знаю, что это возможно, потому что он работает (как-то) в другом приложении.Вот код из примера приложения:
AppDelegate.swift
import CocoaLumberjack
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
DDLog.add(DDOSLogger.sharedInstance)
let fileLogger = DDFileLogger()
fileLogger.rollingFrequency = 60 * 60 * 24
fileLogger.logFileManager.maximumNumberOfLogFiles = 7
DDLog.add(fileLogger)
DDLogInfo("Did finish launching")
return true
}
}
ViewController.swift
import CocoaLumberjack
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
DDLogInfo("View did load")
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
guard let fileLogger = DDLog.allLoggers.compactMap({ $0 as? DDFileLogger }).first else { fatalError() }
let logURLs = fileLogger.logFileManager.sortedLogFilePaths.map { URL(fileURLWithPath: $0) }
let controller = UIActivityViewController(activityItems: [logURLs], applicationActivities: nil)
present(controller, animated: true)
}
}
Я утроил, проверил, существуют ли журналы на диске, как на устройстве, так и на симуляторе, и они есть.Если я проверяю URL-адреса в константе logURLs
, я могу перейти к журналам на диске и даже открыть их в консоли так же хорошо, как и любые другие журналы.