From 799f9e737c3b11aa506a300f1fb82464198a9e7e Mon Sep 17 00:00:00 2001 From: Amit Davidi Date: Sun, 20 Nov 2016 09:47:02 +0200 Subject: [PATCH] Move library code to repo root to enable npm publishing --- README.md | 33 +++- .../.gitignore | 0 .../build.gradle | 0 .../proguard-rules.pro | 0 android/reactnativenotification.iml | 154 ++++++++++++++++++ .../src/main/AndroidManifest.xml | 0 .../wix/reactnativenotifications/Defs.java | 0 .../RNNotificationsPackage.java | 0 .../core/AppLaunchHelper.java | 0 .../core/AppLifecycleFacade.java | 0 .../core/InitialNotification.java | 0 .../core/NotificationIntentAdapter.java | 0 .../core/ProxyService.java | 0 .../core/RNNotificationsModule.java | 0 .../core/ReactAppLifecycleFacade.java | 0 .../INotificationsApplication.java | 0 .../core/notification/IPushNotification.java | 0 .../core/notification/PushNotification.java | 9 + .../notification/PushNotificationProps.java | 0 .../INotificationsDrawerApplication.java | 0 .../IPushNotificationsDrawer.java | 0 .../PushNotificationsDrawer.java | 0 .../gcm/GcmInstanceIdListenerService.java | 0 .../GcmInstanceIdRefreshHandlerService.java | 0 .../gcm/GcmMessageHandlerService.java | 0 .../gcm/GcmToken.java | 0 .../gcm/IGcmToken.java | 0 .../gcm/INotificationsGcmApplication.java | 0 example/android/myapplication/build.gradle | 2 +- example/android/settings.gradle | 4 +- 30 files changed, 193 insertions(+), 9 deletions(-) rename {example/android/reactnativenotification => android}/.gitignore (100%) rename {example/android/reactnativenotification => android}/build.gradle (100%) rename {example/android/reactnativenotification => android}/proguard-rules.pro (100%) create mode 100644 android/reactnativenotification.iml rename {example/android/reactnativenotification => android}/src/main/AndroidManifest.xml (100%) rename {example/android/reactnativenotification => android}/src/main/java/com/wix/reactnativenotifications/Defs.java (100%) rename {example/android/reactnativenotification => android}/src/main/java/com/wix/reactnativenotifications/RNNotificationsPackage.java (100%) rename {example/android/reactnativenotification => android}/src/main/java/com/wix/reactnativenotifications/core/AppLaunchHelper.java (100%) rename {example/android/reactnativenotification => android}/src/main/java/com/wix/reactnativenotifications/core/AppLifecycleFacade.java (100%) rename {example/android/reactnativenotification => android}/src/main/java/com/wix/reactnativenotifications/core/InitialNotification.java (100%) rename {example/android/reactnativenotification => android}/src/main/java/com/wix/reactnativenotifications/core/NotificationIntentAdapter.java (100%) rename {example/android/reactnativenotification => android}/src/main/java/com/wix/reactnativenotifications/core/ProxyService.java (100%) rename {example/android/reactnativenotification => android}/src/main/java/com/wix/reactnativenotifications/core/RNNotificationsModule.java (100%) rename {example/android/reactnativenotification => android}/src/main/java/com/wix/reactnativenotifications/core/ReactAppLifecycleFacade.java (100%) rename {example/android/reactnativenotification => android}/src/main/java/com/wix/reactnativenotifications/core/notification/INotificationsApplication.java (100%) rename {example/android/reactnativenotification => android}/src/main/java/com/wix/reactnativenotifications/core/notification/IPushNotification.java (100%) rename {example/android/reactnativenotification => android}/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotification.java (94%) rename {example/android/reactnativenotification => android}/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotificationProps.java (100%) rename {example/android/reactnativenotification => android}/src/main/java/com/wix/reactnativenotifications/core/notificationdrawer/INotificationsDrawerApplication.java (100%) rename {example/android/reactnativenotification => android}/src/main/java/com/wix/reactnativenotifications/core/notificationdrawer/IPushNotificationsDrawer.java (100%) rename {example/android/reactnativenotification => android}/src/main/java/com/wix/reactnativenotifications/core/notificationdrawer/PushNotificationsDrawer.java (100%) rename {example/android/reactnativenotification => android}/src/main/java/com/wix/reactnativenotifications/gcm/GcmInstanceIdListenerService.java (100%) rename {example/android/reactnativenotification => android}/src/main/java/com/wix/reactnativenotifications/gcm/GcmInstanceIdRefreshHandlerService.java (100%) rename {example/android/reactnativenotification => android}/src/main/java/com/wix/reactnativenotifications/gcm/GcmMessageHandlerService.java (100%) rename {example/android/reactnativenotification => android}/src/main/java/com/wix/reactnativenotifications/gcm/GcmToken.java (100%) rename {example/android/reactnativenotification => android}/src/main/java/com/wix/reactnativenotifications/gcm/IGcmToken.java (100%) rename {example/android/reactnativenotification => android}/src/main/java/com/wix/reactnativenotifications/gcm/INotificationsGcmApplication.java (100%) diff --git a/README.md b/README.md index 9e1f2bd..962278d 100644 --- a/README.md +++ b/README.md @@ -19,12 +19,14 @@ Handle all the aspects of push notifications for your app, including remote and ### Android +>**Please advise that Android support is a work in progress and is subject to breaking changes in the near future** + - Receiving notifications in any App state (foreground, background, "dead") - Built-in notification drawer management -- High degree of code extensibility to allow for advanced custom layouts and specific notifications behavior as available by [Android's API](https://developer.android.com/training/notify-user/build-notification.html) +- High degree of code extensibility to allow for advanced custom layouts and any specific notifications behavior as available by [Android's API](https://developer.android.com/training/notify-user/build-notification.html) - Android equivalent of React-Native's implementation of [`PushNotificationsIOS.getInitialNotification()`](https://facebook.github.io/react-native/docs/pushnotificationios.html#getinitialnotification). ->Upcoming: local notifications, background-state Rx queue (iOS equivalent) +_Upcoming: local notifications, background-state Rx queue (iOS equivalent)_ ## Installation @@ -70,17 +72,36 @@ And the following methods to support registration and receiving notifications: ### Android -> Installation on Android is necessary in case you wish to receive push notifications on your React-Native app. + +Add a reference to the library's native code in your global `settings.gradle`: + +``` +include ':reactnativenotifications' +project(':reactnativenotifications').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-notifications/android') +``` + +Declare the library as a dependency in your **app-project's** `build.gradle`: + +``` +dependencies { + // ... + compile project(':reactnativenotifications') +} +``` + +### Receiving push notifications + +> This section is only necessary in case you wish to **receive** push notifications in your React-Native app. Push notifications on Android are managed and dispatched using [Google's GCM service](https://developers.google.com/cloud-messaging/gcm) (now integrated into Firebase). The following installation steps are a TL;DR of [Google's GCM setup guide](https://developers.google.com/cloud-messaging/android/client). You can follow them to get GCM integrated quickly, but we recommend that you will in the very least have a peek at the guide's overview. -#### Step #1: Subscribe to Google's GCM +##### Step #1: Subscribe to Google's GCM -To set GCM in your app, you must first create a Google API-project and obtain a **Sender ID** and a **Server API Key**. If you have no existing API projects yet, the easiest way to go about in creating one is using [this step-by-step installation process](https://developers.google.com/mobile/add); Use [this tutorial](https://code.tutsplus.com/tutorials/how-to-get-started-with-push-notifications-on-android--cms-25870) for insturctions. +To set GCM in your app, you must first create a Google API-project and obtain a **Sender ID** and a **Server API Key**. If you have no existing API project yet, the easiest way to go about in creating one is using [this step-by-step installation process](https://developers.google.com/mobile/add); Use [this tutorial](https://code.tutsplus.com/tutorials/how-to-get-started-with-push-notifications-on-android--cms-25870) for insturctions. Alternatively, follow [Google's complete guide](https://developers.google.com/cloud-messaging/android/client#create-an-api-project). -#### Step #2: Add Sender ID to Manifest File +##### Step #2: Add Sender ID to Manifest File Once obtained, bundle the Sender ID onto your main `manifest.xml` file: diff --git a/example/android/reactnativenotification/.gitignore b/android/.gitignore similarity index 100% rename from example/android/reactnativenotification/.gitignore rename to android/.gitignore diff --git a/example/android/reactnativenotification/build.gradle b/android/build.gradle similarity index 100% rename from example/android/reactnativenotification/build.gradle rename to android/build.gradle diff --git a/example/android/reactnativenotification/proguard-rules.pro b/android/proguard-rules.pro similarity index 100% rename from example/android/reactnativenotification/proguard-rules.pro rename to android/proguard-rules.pro diff --git a/android/reactnativenotification.iml b/android/reactnativenotification.iml new file mode 100644 index 0000000..c77c19b --- /dev/null +++ b/android/reactnativenotification.iml @@ -0,0 +1,154 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/example/android/reactnativenotification/src/main/AndroidManifest.xml b/android/src/main/AndroidManifest.xml similarity index 100% rename from example/android/reactnativenotification/src/main/AndroidManifest.xml rename to android/src/main/AndroidManifest.xml diff --git a/example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/Defs.java b/android/src/main/java/com/wix/reactnativenotifications/Defs.java similarity index 100% rename from example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/Defs.java rename to android/src/main/java/com/wix/reactnativenotifications/Defs.java diff --git a/example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/RNNotificationsPackage.java b/android/src/main/java/com/wix/reactnativenotifications/RNNotificationsPackage.java similarity index 100% rename from example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/RNNotificationsPackage.java rename to android/src/main/java/com/wix/reactnativenotifications/RNNotificationsPackage.java diff --git a/example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/core/AppLaunchHelper.java b/android/src/main/java/com/wix/reactnativenotifications/core/AppLaunchHelper.java similarity index 100% rename from example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/core/AppLaunchHelper.java rename to android/src/main/java/com/wix/reactnativenotifications/core/AppLaunchHelper.java diff --git a/example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/core/AppLifecycleFacade.java b/android/src/main/java/com/wix/reactnativenotifications/core/AppLifecycleFacade.java similarity index 100% rename from example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/core/AppLifecycleFacade.java rename to android/src/main/java/com/wix/reactnativenotifications/core/AppLifecycleFacade.java diff --git a/example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/core/InitialNotification.java b/android/src/main/java/com/wix/reactnativenotifications/core/InitialNotification.java similarity index 100% rename from example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/core/InitialNotification.java rename to android/src/main/java/com/wix/reactnativenotifications/core/InitialNotification.java diff --git a/example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/core/NotificationIntentAdapter.java b/android/src/main/java/com/wix/reactnativenotifications/core/NotificationIntentAdapter.java similarity index 100% rename from example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/core/NotificationIntentAdapter.java rename to android/src/main/java/com/wix/reactnativenotifications/core/NotificationIntentAdapter.java diff --git a/example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/core/ProxyService.java b/android/src/main/java/com/wix/reactnativenotifications/core/ProxyService.java similarity index 100% rename from example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/core/ProxyService.java rename to android/src/main/java/com/wix/reactnativenotifications/core/ProxyService.java diff --git a/example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/core/RNNotificationsModule.java b/android/src/main/java/com/wix/reactnativenotifications/core/RNNotificationsModule.java similarity index 100% rename from example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/core/RNNotificationsModule.java rename to android/src/main/java/com/wix/reactnativenotifications/core/RNNotificationsModule.java diff --git a/example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/core/ReactAppLifecycleFacade.java b/android/src/main/java/com/wix/reactnativenotifications/core/ReactAppLifecycleFacade.java similarity index 100% rename from example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/core/ReactAppLifecycleFacade.java rename to android/src/main/java/com/wix/reactnativenotifications/core/ReactAppLifecycleFacade.java diff --git a/example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/core/notification/INotificationsApplication.java b/android/src/main/java/com/wix/reactnativenotifications/core/notification/INotificationsApplication.java similarity index 100% rename from example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/core/notification/INotificationsApplication.java rename to android/src/main/java/com/wix/reactnativenotifications/core/notification/INotificationsApplication.java diff --git a/example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/core/notification/IPushNotification.java b/android/src/main/java/com/wix/reactnativenotifications/core/notification/IPushNotification.java similarity index 100% rename from example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/core/notification/IPushNotification.java rename to android/src/main/java/com/wix/reactnativenotifications/core/notification/IPushNotification.java diff --git a/example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotification.java b/android/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotification.java similarity index 94% rename from example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotification.java rename to android/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotification.java index f3cae79..5258fda 100644 --- a/example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotification.java +++ b/android/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotification.java @@ -25,6 +25,10 @@ import com.wix.reactnativenotifications.core.notificationdrawer.PushNotification import static com.wix.reactnativenotifications.Defs.NOTIFICATION_OPENED_EVENT_NAME; import static com.wix.reactnativenotifications.Defs.NOTIFICATION_RECEIVED_EVENT_NAME; +// TODO: +// 1. Opening the from notif, then tapping 'home', the opening from launcher icon results in main activity over main activity +// 2. Double check initial notification set up and clearing + public class PushNotification implements IPushNotification { final private Context mContext; @@ -85,6 +89,11 @@ public class PushNotification implements IPushNotification { return; } + final ReactContext reactContext = getRunningReactContext(); + if (reactContext.getCurrentActivity() == null) { + setAsInitialNotification(); + } + if (mAppLifecycleFacade.isAppVisible()) { dispatchImmediately(); } else { diff --git a/example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotificationProps.java b/android/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotificationProps.java similarity index 100% rename from example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotificationProps.java rename to android/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotificationProps.java diff --git a/example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/core/notificationdrawer/INotificationsDrawerApplication.java b/android/src/main/java/com/wix/reactnativenotifications/core/notificationdrawer/INotificationsDrawerApplication.java similarity index 100% rename from example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/core/notificationdrawer/INotificationsDrawerApplication.java rename to android/src/main/java/com/wix/reactnativenotifications/core/notificationdrawer/INotificationsDrawerApplication.java diff --git a/example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/core/notificationdrawer/IPushNotificationsDrawer.java b/android/src/main/java/com/wix/reactnativenotifications/core/notificationdrawer/IPushNotificationsDrawer.java similarity index 100% rename from example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/core/notificationdrawer/IPushNotificationsDrawer.java rename to android/src/main/java/com/wix/reactnativenotifications/core/notificationdrawer/IPushNotificationsDrawer.java diff --git a/example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/core/notificationdrawer/PushNotificationsDrawer.java b/android/src/main/java/com/wix/reactnativenotifications/core/notificationdrawer/PushNotificationsDrawer.java similarity index 100% rename from example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/core/notificationdrawer/PushNotificationsDrawer.java rename to android/src/main/java/com/wix/reactnativenotifications/core/notificationdrawer/PushNotificationsDrawer.java diff --git a/example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/gcm/GcmInstanceIdListenerService.java b/android/src/main/java/com/wix/reactnativenotifications/gcm/GcmInstanceIdListenerService.java similarity index 100% rename from example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/gcm/GcmInstanceIdListenerService.java rename to android/src/main/java/com/wix/reactnativenotifications/gcm/GcmInstanceIdListenerService.java diff --git a/example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/gcm/GcmInstanceIdRefreshHandlerService.java b/android/src/main/java/com/wix/reactnativenotifications/gcm/GcmInstanceIdRefreshHandlerService.java similarity index 100% rename from example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/gcm/GcmInstanceIdRefreshHandlerService.java rename to android/src/main/java/com/wix/reactnativenotifications/gcm/GcmInstanceIdRefreshHandlerService.java diff --git a/example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/gcm/GcmMessageHandlerService.java b/android/src/main/java/com/wix/reactnativenotifications/gcm/GcmMessageHandlerService.java similarity index 100% rename from example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/gcm/GcmMessageHandlerService.java rename to android/src/main/java/com/wix/reactnativenotifications/gcm/GcmMessageHandlerService.java diff --git a/example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/gcm/GcmToken.java b/android/src/main/java/com/wix/reactnativenotifications/gcm/GcmToken.java similarity index 100% rename from example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/gcm/GcmToken.java rename to android/src/main/java/com/wix/reactnativenotifications/gcm/GcmToken.java diff --git a/example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/gcm/IGcmToken.java b/android/src/main/java/com/wix/reactnativenotifications/gcm/IGcmToken.java similarity index 100% rename from example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/gcm/IGcmToken.java rename to android/src/main/java/com/wix/reactnativenotifications/gcm/IGcmToken.java diff --git a/example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/gcm/INotificationsGcmApplication.java b/android/src/main/java/com/wix/reactnativenotifications/gcm/INotificationsGcmApplication.java similarity index 100% rename from example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/gcm/INotificationsGcmApplication.java rename to android/src/main/java/com/wix/reactnativenotifications/gcm/INotificationsGcmApplication.java diff --git a/example/android/myapplication/build.gradle b/example/android/myapplication/build.gradle index 91b6539..00e378e 100644 --- a/example/android/myapplication/build.gradle +++ b/example/android/myapplication/build.gradle @@ -32,7 +32,7 @@ dependencies { compile 'com.android.support:appcompat-v7:23.4.0' compile 'com.android.support:design:23.4.0' compile 'com.facebook.react:react-native:+' - compile project(':reactnativenotification') + compile project(':reactnativenotifications') testCompile 'junit:junit:4.12' } diff --git a/example/android/settings.gradle b/example/android/settings.gradle index 588dd48..ac703f3 100644 --- a/example/android/settings.gradle +++ b/example/android/settings.gradle @@ -1,4 +1,4 @@ include ':myapplication' -include ':reactnativenotification' -//project(':reactnativenotification').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-notification/android') +include ':reactnativenotifications' +project(':reactnativenotifications').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-notifications/android') -- 2.26.2