LockedCameraCapture не запускает приложение с экрана блокировкиIOS

Программируем под IOS
Ответить
Anonymous
 LockedCameraCapture не запускает приложение с экрана блокировки

Сообщение Anonymous »

Моя реализация LockedCameraCapture не запускает мое приложение при нажатии на заблокированном экране. Но когда тот же виджет находится в Центре управления, он успешно запускает приложение.
Стандартный целевой шаблон Xcode:
Lock_Screen_Capture.swift

Код: Выделить всё

import Foundation
import LockedCameraCapture
import SwiftUI

@main
struct Lock_Screen_Capture: LockedCameraCaptureExtension {
var body: some LockedCameraCaptureExtensionScene {
LockedCameraCaptureUIScene { session in
Lock_Screen_CaptureViewFinder(session: session)
}
}
}
Lock_Screen_CaptureViewFinder.swift

Код: Выделить всё

import SwiftUI
import UIKit
import UniformTypeIdentifiers
import LockedCameraCapture

struct Lock_Screen_CaptureViewFinder: UIViewControllerRepresentable {
let session: LockedCameraCaptureSession
var sourceType: UIImagePickerController.SourceType = .camera

init(session: LockedCameraCaptureSession) {
self.session = session
}

func makeUIViewController(context: Self.Context) -> UIImagePickerController {
let imagePicker = UIImagePickerController()
imagePicker.sourceType = sourceType
imagePicker.mediaTypes = [UTType.image.identifier, UTType.movie.identifier]
imagePicker.cameraDevice = .rear

return imagePicker
}

func updateUIViewController(_ uiViewController: UIImagePickerController, context: Self.Context) {
}
}
Тогда у меня есть виджет:

Код: Выделить всё

struct CameraWidgetControl: ControlWidget {
var body: some ControlWidgetConfiguration {
StaticControlConfiguration(
kind: "com.myCompany.myAppName.lock-screen") {
ControlWidgetButton(action: MyAppCaptureIntent()) {
Label("Capture", systemImage: "camera.shutter.button.fill")
}
}
}
}
Мое AppIntent:

Код: Выделить всё

struct MyAppContext: Codable {}

struct MyAppCaptureIntent: CameraCaptureIntent {

typealias AppContext = MyAppContext
static let title: LocalizedStringResource = "MyAppCaptureIntent"
static let description = IntentDescription("Capture photos and videos with MyApp.")

@MainActor
func perform() async throws -> some IntentResult {
.result()
}
}
Проблема

Код: Выделить всё

LockedCameraCapture
Виджет не запускает мое приложение при нажатии на заблокированном экране. Вы получите приглашение Face ID и перейдете только на главный экран. Но когда тот же виджет находится в Центре управления, он успешно запускает приложение.
Сообщение об ошибке
При нажатии на экран блокировки я получаю следующий код ошибки:

Код: Выделить всё

LaunchServices: store ‹private > or url ‹private > was nil: Error Domain=NSOSStatusErrorDomain Code=-54 "process may not map database"
UserInfo=&NSDebugDescription=process may not map database, _LSLine=72, _LSFunction=_LSServer_GetServerStoreForConnectionWithCompletionHandler}

Attempt to map database failed: permission was denied. This attempt will not be retried.

Failed to initialize client context with error Error Domain=NSOSStatusErrorDomain Code=-54 "process may not map database"
UserInfo=&NSDebugDescription=process may not map database, _LSLine=72, _LSFunction=_LSServer_GetServerStoreForConnectionWithCompletionHandler}
Что я пробовал
  • Изображение виджета отображается правильно
  • Идентификатор приложения и профиль обеспечения, похоже, в порядке, поскольку они работают нормально, когда тот же код внедряется в образец приложения AVCam и когда используются одни и те же идентификаторы приложения.
  • Файл AppIntent содержит целевые членства экрана блокировки захват и виджет
  • Apple компилируется без ошибок и предупреждений.


Подробнее здесь: https://stackoverflow.com/questions/797 ... ock-screen
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»