React-native-onesignal: ¿Hay una opción para ignorar el launchURL?

Creado en 4 nov. 2016  ·  4Comentarios  ·  Fuente: OneSignal/react-native-onesignal

¡Hola!

Ya configuré todo y las notificaciones funcionan perfectamente.
Cuando envío un mensaje normal sin url y presiono sobre la notificación, se abre la aplicación móvil, que es lo que quiero.

Pero la única cuenta de señal que está enviando la notificación también se usa en una extensión de Chrome, por lo que hay una URL para un sitio web configurado en los parámetros de la notificación. Entonces, cuando el móvil recibe esta notificación, está usando la URL del sitio web y está abriendo un navegador y no la aplicación móvil.

¿Hay alguna forma de ignorar la URL?
¿O tal vez detener el comportamiento normal y abrir manualmente la aplicación móvil?
¿O estoy haciendo algo mal para obtener este resultado?

Gracias por la ayuda.

Todos 4 comentarios

@jkasten2

@ccstorch @avishayil No hay forma de deshabilitar el comportamiento de la URL de inicio en la aplicación. En su caso, deberá enviar 2 notificaciones separadas. Uno solo para su extensión de Chrome con un conjunto de URL de inicio y otro para su aplicación móvil.

¡No hay problema, gracias por la ayuda @jkasten2!

Revolver el método OneSignalHelper de displayWebView : es una solución para resolver también este problema. No es un enfoque _gran_ pero hace el trabajo (por ahora).

⚠️ SOLO HAZ ESTO SI TE SIENTES YOLO ⚠️

#import <RCTOneSignal/RCTOneSignal.h>
#import <objc/runtime.h>

<strong i="9">@implementation</strong> AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    // Don't do this unless in dire yolo situations
    SwizzleClassMethod(NSClassFromString(@"OneSignalHelper"), @selector(displayWebView:), [AppDelegate class], @selector(displayWebView:));

    NSString *oneSignalAPIID = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"ONE_SIGNAL_API_ID"];
    self.oneSignal = [[RCTOneSignal alloc] initWithLaunchOptions:launchOptions appId:oneSignalAPIID];

    return YES;
}

+ (void) displayWebView:(NSURL*)url {
    NSLog(@"This is dumb"); 
}

void SwizzleClassMethod(Class cOriginal, SEL orig, Class cNew, SEL new) {

    Method origMethod = class_getClassMethod(cOriginal, orig);
    Method newMethod = class_getClassMethod(cNew, new);

    cOriginal = object_getClass((id)cOriginal);
    cNew = object_getClass((id)cNew);

    if(class_addMethod(cOriginal, orig, method_getImplementation(newMethod), method_getTypeEncoding(newMethod))) {
        class_replaceMethod(cNew, new, method_getImplementation(origMethod), method_getTypeEncoding(origMethod));
    } else {
        method_exchangeImplementations(origMethod, newMethod);
    }
}

<strong i="10">@end</strong>
¿Fue útil esta página
0 / 5 - 0 calificaciones