React-native-onesignal: launchURLを無視するオプションはありますか?

作成日 2016年11月04日  ·  4コメント  ·  ソース: OneSignal/react-native-onesignal

こんにちは!

私はすでにすべてをセットアップし、通知は完全に機能しています。
URLなしで通常のメッセージを送信して通知を押すと、モバイルアプリが起動します。これが私が望むものです。

ただし、通知を送信している1つのシグナルアカウントはChrome拡張機能でも使用されるため、通知のパラメーターで構成されたWebサイトのURLがあります。 したがって、モバイルがこの通知を受信すると、モバイルはWebサイトのURLを使用しており、モバイルアプリではなくブラウザーを開いています。

URLを無視する方法はありますか?
または、通常の動作を停止して手動でモバイルアプリを開きますか?
または、この結果を得るために何か間違ったことをしていますか?

助けてくれてありがとう。

全てのコメント4件

@ jkasten2

@ ccstorch @ avishayilアプリで起動URLの動作を無効にする方法はありません。 あなたの場合、2つの別々の通知を送信する必要があります。 1つは起動URLが設定されたChrome拡張機能だけで、もう1つはモバイルアプリです。

問題ありません、@ jkasten2の助けに感謝します!

OneSignalHelperdisplayWebView :メソッドをスウィズリングすることも、この問題を解決するための解決策です。 それは_素晴らしい_アプローチではありませんが、(今のところ)仕事を成し遂げます。

⚠️これは、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>
このページは役に立ちましたか?
0 / 5 - 0 評価