Skip to content

Instantly share code, notes, and snippets.

@canhnht
Created February 8, 2018 03:21
Show Gist options
  • Save canhnht/9f50bc3180b57307ecedd89cdee21e1c to your computer and use it in GitHub Desktop.
Save canhnht/9f50bc3180b57307ecedd89cdee21e1c to your computer and use it in GitHub Desktop.

Revisions

  1. canhnht created this gist Feb 8, 2018.
    17 changes: 17 additions & 0 deletions AppDelegate.h
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,17 @@
    /**
    * Copyright (c) 2015-present, Facebook, Inc.
    * All rights reserved.
    *
    * This source code is licensed under the BSD-style license found in the
    * LICENSE file in the root directory of this source tree. An additional grant
    * of patent rights can be found in the PATENTS file in the same directory.
    */

    #import <UIKit/UIKit.h>
    #import <Google/SignIn.h>

    @interface AppDelegate : UIResponder <UIApplicationDelegate>

    @property (nonatomic, strong) UIWindow *window;

    @end
    125 changes: 125 additions & 0 deletions AppDelegate.m
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,125 @@
    /**
    * Copyright (c) 2015-present, Facebook, Inc.
    * All rights reserved.
    *
    * This source code is licensed under the BSD-style license found in the
    * LICENSE file in the root directory of this source tree. An additional grant
    * of patent rights can be found in the PATENTS file in the same directory.
    */

    #import "AppDelegate.h"
    #import <Fabric/Fabric.h>
    #import <Crashlytics/Crashlytics.h>

    #import <React/RCTBundleURLProvider.h>
    #import <React/RCTRootView.h>
    #import "RCCManager.h"
    #import <React/RCTLinkingManager.h>

    // Facebook SDK Installation
    #import <FBSDKCoreKit/FBSDKCoreKit.h>
    #import <FBSDKLoginKit/FBSDKLoginKit.h>

    // React Native Notifications
    #import "RNNotifications.h"

    @implementation AppDelegate

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

    NSError* configureError;
    [[GGLContext sharedInstance] configureWithError: &configureError];
    NSAssert(!configureError, @"Error configuring Google services: %@", configureError);

    #ifdef DEBUG
    jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil];
    #else
    jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
    #endif

    // Replaced by react-native-navigation
    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
    self.window.backgroundColor = [UIColor whiteColor];
    [[RCCManager sharedInstance] initBridgeWithBundleURL:jsCodeLocation launchOptions:launchOptions];

    [[FBSDKApplicationDelegate sharedInstance] application:application
    didFinishLaunchingWithOptions:launchOptions];

    [Fabric with:@[[Crashlytics class]]];
    return YES;
    }

    - (BOOL)application:(UIApplication *)application
    openURL:(NSURL *)url
    options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
    return [[FBSDKApplicationDelegate sharedInstance]application:application
    openURL:url
    sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
    annotation:options[UIApplicationOpenURLOptionsAnnotationKey]]
    || [[GIDSignIn sharedInstance] handleURL:url
    sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
    annotation:options[UIApplicationOpenURLOptionsAnnotationKey]]
    || [RCTLinkingManager application:application openURL:url options:options];
    }

    - (void)applicationWillResignActive:(UIApplication *)application{
    [FBSDKAppEvents activateApp];
    }

    - (void)applicationDidBecomeActive:(UIApplication *)application {
    [FBSDKAppEvents activateApp];
    }

    - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
    sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    return [[FBSDKApplicationDelegate sharedInstance] application:application
    openURL:url
    sourceApplication:sourceApplication
    annotation:annotation
    ]
    || [[GIDSignIn sharedInstance] handleURL:url
    sourceApplication:sourceApplication
    annotation:annotation]
    || [RCTLinkingManager application:application openURL:url
    sourceApplication:sourceApplication annotation:annotation];
    }


    // Required to register for notifications
    - (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings
    {
    [RNNotifications didRegisterUserNotificationSettings:notificationSettings];
    }

    - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
    {
    [RNNotifications didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];
    }

    - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
    [RNNotifications didFailToRegisterForRemoteNotificationsWithError:error];
    }

    // Required for the notification event.
    - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)notification {
    [RNNotifications didReceiveRemoteNotification:notification];
    }

    // Required for the localNotification event.
    - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
    {
    [RNNotifications didReceiveLocalNotification:notification];
    }

    // Only if your app is using [Universal Links](https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/AppSearch/UniversalLinks.html).
    - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity
    restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler
    {
    return [RCTLinkingManager application:application
    continueUserActivity:userActivity
    restorationHandler:restorationHandler];
    }

    @end