iOS salta de extensión a aplicación

antecedentes

Debe Extensionsaltar a la página principal cuando haga clic en App, la transferencia de datos no se considera por el momento, solo si la página principal está abierta App.

Al final del día, todavía necesitamos usar UIApplicationel openURL:método para abrir el principal App, pero esta APIlimitación Extensionse usa en

wecom-temp-02eb4ff4bffc7de70373eed58989a8d4.png

resolver

¿La extensión necesita una interfaz?

Lo que hice inicialmente fue Action Extensionque había dos tipos cuando lo creé, con interfaz y sin interfaz. ¿Cuál elegir para crear? Se requiere más análisis.

imagen.png

Entonces solo tenemos una idea, Runtimeque llamar openURL:.

Luego, primero debe encontrar UIApplicationel objeto, y Extensiontambién está prohibido usarlo directamente en él.

imagen.png

UIApplicationComo no se puede usar directamente, podemos encontrar el objeto a través de la cadena de respuesta y obtener el objeto perform openURL. Luego, para encontrar el objeto en la cadena de respuesta, UIApplicationdebe elegir un tipo con una interfaz para crearlo.

como encontrarUIApplication

func openApp(url: URL) {
    var responder = self as UIResponder?
    while (responder != nil && !(responder is UIApplication)) {
        responder = responder?.next
    }
    if responder != nil {
        let selectorOpenURL = sel_registerName("openURL:")
        if responder!.responds(to: selectorOpenURL) {
            responder?.perform(selectorOpenURL, with: url)
        }
    }
}
复制代码

En este punto, el problema de abrir la aplicación se ha solucionado y solo necesita usarla App Grouppara transmitir datos.

Supongo que te gusta

Origin juejin.im/post/7078927981766246407
Recomendado
Clasificación