Приложение Swiftui замораживает на iOS 18 с Swift 6 после диалога ATT Armission Clicked - Проблема утверждения потокаIOS

Программируем под IOS
Ответить
Anonymous
 Приложение Swiftui замораживает на iOS 18 с Swift 6 после диалога ATT Armission Clicked - Проблема утверждения потока

Сообщение Anonymous »

Мое приложение используется для построения с помощью Swift 6 , и оно работает отлично. Однако, поскольку я использую Google Admob для монетизации, я должен реализовать диалоговое окно «Прозрачность прозрачности приложения» (ATT) в начале приложения. < /P>
Это моя текущая реализация: < /p>

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

import SwiftUI
import GoogleMobileAds
import AppTrackingTransparency

class AppDelegate: UIResponder, UIApplicationDelegate {

func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

// Initialize Mobile Ads SDK
MobileAds.shared.start(completionHandler: nil)

// Request ATT authorization after a delay
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
self.requestIDFA()
}

return true
}

func requestIDFA() {
ATTrackingManager.requestTrackingAuthorization { status in
// Handle authorization status
switch status {
case .authorized:
print("ATT: User authorized tracking")
case .denied:
print("ATT: User denied tracking")
case .restricted:
print("ATT: Tracking is restricted")
case .notDetermined:
print("ATT: User has not made a choice")
@unknown default:
print("ATT: Unknown status")
}
}
}
}

@main
struct MyApp: App {

@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate

var body: some Scene {
WindowGroup {
ContentView()
}
}
}
< /code>
Я протестировал с iOS 16 и 17, и он работает так же, как и ожидалось. Но когда я тестировал на эмуляторе iOS 18, появляется подсказка, нажмите на Allow 
или не разрешить , и она замерзла. Выбор пользователя по -прежнему зарегистрирован как ATT: пользовательский авторизованный отслеживание Показать в журнале (и после выхода приложения и снова открыть, в журнале все еще показывает правильный выбор пользователя ATT).
Проблема связана с проблемой утверждения потока. Например: < /p>

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

Thread 2 Queue : com.apple.root.default-qos (concurrent)

#0  0x00000001023e4214 in _dispatch_assert_queue_fail ()
#12 0x00000001025afb38 in _pthread_wqthread ()
мое решение : после попытки отладить, я обнаружил, что мне нужно только переключиться с Swift 6 на Swift 5 . И приложение работает снова.
мой запрос: мой просьба заключается в том, что я все еще хочу построить приложение с помощью Swift 6 (для будущих доказательств), как я могу это сделать? Спасибо ~

Подробнее здесь: https://stackoverflow.com/questions/795 ... og-clicked
Ответить

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

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

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

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

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