Hai Saya membuat aplikasi ios menggunakan UniversalLink.
Universal Link berfungsi dengan baik, tetapi metode panggilan balik tidak disebut.
AppDelegate.swift saya ada di bawah.
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
return true
}
func application(_ application: UIApplication,
willFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
return true
}
// this method not called!!
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
print("called")
return true
}
}
Metode ini disebut di iOS 12 Simulator.
Jadi, masalahnya hanya terjadi di iOS 13.
Hanya di iOS13 kesalahan ini dicetak di konsol.
Tidak dapat mengakhiri BackgroundTask: tidak ada tugas latar belakang dengan pengenal 1 (0x1), atau mungkin sudah berakhir. Break di UIApplicationEndBackgroundTaskError () untuk debug.
Jadi, ini mungkin penyebab masalahnya.
Saya sangat menghargai bantuan seseorang
Jawaban:
Dalam kasus saya, saya mulai merek proyek baru di Xcode 11 yang menggunakan
SceneDelegate
sertaAppDelegate
Sepertinya UniversalLinks (dan mungkin beberapa API lainnya) menggunakan panggilan balik ini pada
SceneDelegate
:Alih-alih panggilan balik ini pada
AppDelegate
:Setelah saya menerapkan satu pada
SceneDelegate
semuanya mulai berfungsi seperti yang diharapkan lagi. Saya belum mencobanya, tetapi saya berasumsi bahwa jika Anda menargetkan iOS 12 ke bawah, Anda mungkin perlu menerapkan kedua metode ini.Semoga ini membantu
sumber
Saya memiliki masalah serupa dengan
SceneDelegate
dan tautan universal di mana saya tidak bisa sampai ke NSUserActivity ketika aplikasi baru saja diluncurkan (dalam hal ini Background membaca NFC di ios 13).Seperti disebutkan dalam jawaban oleh @Jan, lanjutkan userActivity sekarang di
SceneDelegate
.Jika aplikasi sedang berjalan atau di latar belakang yaitu. ditutup, tautan universal akan memecat
scene(_:continue:)
delegasi.Jika aplikasi tidak di latar belakang, tautan universal tidak akan muncul dari
scene(_:continue:)
delegasi. Sebaliknya,NSUserActivity
akan tersedia dariscene(_:willConnectTo:options:)
. misalnya.sumber