React-native-onesignal: Apakah ada opsi untuk mengabaikan launchURL?

Dibuat pada 4 Nov 2016  ·  4Komentar  ·  Sumber: OneSignal/react-native-onesignal

Halo!

Saya sudah mengatur semuanya dan notifikasi berfungsi dengan baik.
Ketika saya mengirim pesan normal tanpa url dan menekan notifikasi, aplikasi seluler diluncurkan, itulah yang saya inginkan.

Tetapi akun satu sinyal yang mengirimkan notifikasi juga digunakan pada ekstensi chrome, jadi ada url untuk situs web yang dikonfigurasi pada parameter notifikasi. Jadi ketika ponsel menerima pemberitahuan ini, itu menggunakan url untuk situs web, dan membuka browser dan bukan aplikasi seluler.

Apakah ada cara untuk mengabaikan url?
Atau mungkin menghentikan perilaku normal dan membuka aplikasi seluler secara manual?
Atau saya melakukan sesuatu yang salah untuk mendapatkan hasil ini?

Terima kasih untuk bantuannya.

Semua 4 komentar

@jkasten2

@ccstorch @avishayil Tidak ada cara untuk menonaktifkan perilaku untuk meluncurkan URL di aplikasi. Dalam kasus Anda, Anda harus mengirim 2 pemberitahuan terpisah. Satu hanya untuk ekstensi Chrome Anda dengan kumpulan URL peluncuran dan satu lagi untuk aplikasi seluler Anda.

Tidak masalah, terima kasih atas bantuannya @jkasten2!

Memutar metode OneSignalHelper 's displayWebView : adalah solusi untuk juga memecahkan masalah ini. Ini bukan pendekatan _hebat_ tetapi itu menyelesaikan pekerjaan (untuk saat ini).

️ HANYA LAKUKAN INI JIKA ANDA MERASA 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>
Apakah halaman ini membantu?
0 / 5 - 0 peringkat