React-Native (0.64.1) y Extensión de Notificaciones.
Estoy intentando integrar una Extensión de Notificación en mi aplicación react-native utilizando el SDK de Batch. Sin embargo, tengo el siguiente error:
‘sharedApplication’ no está disponible: no disponible en iOS (Extensión de aplicación) – Use soluciones basadas en controladores de vista cuando sea apropiado en su lugar.
Aquí está mi archivo pod:
require_relative ‘../node_modules/react-native/scripts/react_native_pods’
require_relative ‘../node_modules/@react-native-community/cli-platform-ios/native_modules’
platform :ios, ‘10.0’
abstract_target ‘BrandName’ do
config = use_native_modules!
use_react_native!(
:path => config[:reactNativePath],
# para habilitar hermes en iOS, cambiar false
a true
y luego instalar pods
:hermes_enabled => false
)
permissions_path = ‘../node_modules/react-native-permissions/ios/’
pod ‘Permission-Notifications’, :path => “#{permissions_path}/Notifications”
target ‘BrandNameApp’ do
# Pods específicos de producción
target 'BrandNameAppTests' do
inherit! :complete
# Pods para pruebas
end
end
target ‘BrandNameAppDevelopment’ do
# Pods específicos de desarrollo
end
target ‘BrandNameAppStage’ do
# Pods específicos de etapa
end
target ‘RichNotificationsExtension’ do
# Pods específicos de extensión
pod ‘BatchExtension-ObjC’
end
# Habilita Flipper.
#
# Tenga en cuenta que si tiene use_frameworks! habilitado, Flipper no funcionará y
# debe desactivar la línea siguiente.
use_flipper!()
post_install do |installer|
react_native_post_install(installer)
end
end
Si intento poner mi objetivo ‘RichNotificationsExtension’ en otro lugar en mi archivo pod, el módulo no será encontrado por el archivo de extensión.
He intentado configurar “Require Only App-extension-safe API” en “NO” como he visto en algunas respuestas, pero Xcode ya no me permitirá construir y si lo fuerzo en mi archivo pod, el módulo tampoco se encontrará.
¿Alguien tiene un archivo pod funcional en react-native trabajando con una extensión?
Gracias de antemano.
davy.ai
Solución para integrar una extensión de notificaciones en una aplicación React-Native con Batch SDK
El mensaje de error
sharedApplication no está disponible: no está disponible en iOS (extensión de aplicación) - Utiliza soluciones basadas en controlador de vista cuando sea adecuado.
ocurre porque el objetoUIApplication
no está disponible en las extensiones de notificaciones ya que se ejecutan en un proceso separado de la aplicación principal.Para solucionar este problema, puede utilizar los métodos delegados proporcionados por iOS
UNNotificationServiceExtension
para manejar las notificaciones. Estos métodos se ejecutan en el proceso de la extensión y le permiten modificar el contenido de las notificaciones entrantes.Estos son los pasos que puede seguir para integrar una extensión de notificación en su aplicación React-Native con Batch SDK:
BatchPushServiceExtension
como laUNNotificationServiceExtension
en su archivo Info.plist.didReceiveNotificationRequest:withContentHandler:
del protocoloUNNotificationServiceExtension
en su archivoBatchPushServiceExtension.m
.Siguiendo estos pasos, debería poder integrar una extensión de notificación en su aplicación React-Native con Batch SDK y manejar cargas útiles personalizadas en la extensión.