Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ android {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
debuggable true
}
}
testOptions {
unitTests.all { t ->
Expand All @@ -36,6 +39,16 @@ android {
}
}
}

flavorDimensions "RNNotifications.reactNativeVersion"
productFlavors {
reactNative59 {
dimension "RNNotifications.reactNativeVersion"
}
reactNative60 {
dimension "RNNotifications.reactNativeVersion"
}
}
}

dependencies {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.NotificationManagerCompat;
import android.util.Log;

import com.facebook.react.bridge.ActivityEventListener;
Expand Down Expand Up @@ -108,7 +107,7 @@ public void cancelLocalNotification(int notificationId) {

@ReactMethod
public void isRegisteredForRemoteNotifications(Promise promise) {
boolean hasPermission = NotificationManagerCompat.from(getReactApplicationContext()).areNotificationsEnabled();
boolean hasPermission = NotificationManagerCompatFacade.from(getReactApplicationContext()).areNotificationsEnabled();
promise.resolve(new Boolean(hasPermission));
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.wix.reactnativenotifications.core;

import android.support.annotation.Nullable;

import com.wix.reactnativenotifications.core.notification.PushNotificationProps;

Expand Down Expand Up @@ -32,7 +31,6 @@ public void clear() {
mNotification = null;
}

@Nullable
public PushNotificationProps get() {
return mNotification;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@

package com.wix.reactnativenotifications;

import android.content.Context;
import android.support.annotation.Nullable;
import android.support.v4.app.NotificationManagerCompat;

public abstract class NotificationManagerCompatFacade {
public static NotificationManagerCompat from(@NonNull Context context) {
return NotificationManagerCompat.from(context);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@

package com.wix.reactnativenotifications;

import android.content.Context;
import androidx.annotation.NonNull;
import androidx.core.app.NotificationManagerCompat;

public abstract class NotificationManagerCompatFacade {
public static NotificationManagerCompat from(@NonNull Context context) {
return NotificationManagerCompat.from(context);
}
}
65 changes: 65 additions & 0 deletions docs/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -119,3 +119,68 @@ dependencies {

apply plugin: 'com.google.gms.google-services'
```

#### Step #5: RNNotifications and React Native version
<B>This step is required only for `react-native-notifications` version `3.1.0` and above.</B> <Br>

react-native-notifications supports multiple React Native versions. Target the React Native version required by your project by specifying the RNN build flavor in `android/app/build.gradle`.

```diff
android {
...
defaultConfig {
applicationId "com.yourproject"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
+ missingDimensionStrategy "RNNotifications.reactNativeVersion", "reactNative60" // See note below!
versionCode 1
versionName "1.0"
...
}
...
}
```

!>Important note about `missingDimensionStrategy`<Br>
>`reactNative59` - RN 0.59.x and below<Br>
>`reactNative60` - RN 0.60.0 and above

Now we need to instruct gradle how to build that flavor. To do so here two solutions:

#### 5.1 Build app with gradle command

**prefered solution** The RNNotification flavor you would like to build is specified in `app/build.gradle`. Therefore in order to compile only that flavor, instead of building your entire project using `./gradlew assembleDebug`, you should instruct gradle to build the app module: `./gradlew app:assembleDebug`. The easiest way is to add a package.json command to build and install your debug Android APK .

```
"scripts": {
...
"android": "cd ./android && ./gradlew app:assembleDebug && ./gradlew installDebug"
}
```

Now run `npm run android` to build your application

#### 5.2 Ignore other RNN flavors

If you don't want to run `npm run android` and want to keep the default `react-native run-android` command, you need to specify to graddle to ignore the other flavors RNNotifications provides.

To do so edit `android/build.gradle` and add:

```diff
+subprojects { subproject ->
+ afterEvaluate {
+ if ((subproject.plugins.hasPlugin('android') || subproject.plugins.hasPlugin('android-library'))) {
+ android {
+ variantFilter { variant ->
+ def names = variant.flavors*.name
+ if (names.contains("reactNative59")) {
+ setIgnore(true)
+ }
+ }
+ }
+ }
+ }
+}
```

**Note**: As more build variants come available in the future, you will need to adjust the list (`names.contains("reactNative59")`). This is why we recommend the first solution.
5 changes: 4 additions & 1 deletion example/android/gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,7 @@
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
# org.gradle.parallel=true

android.useAndroidX=true
android.enableJetifier=true
19 changes: 8 additions & 11 deletions example/android/myapplication/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ android {
ndk {
abiFilters "armeabi-v7a", "x86"
}
missingDimensionStrategy "RNNotifications.reactNativeVersion", "reactNative60"
}
buildTypes {
release {
Expand All @@ -35,30 +36,26 @@ android {
sourceCompatibility 1.8
targetCompatibility 1.8
}
}

configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.android.support') {
details.useVersion "28.0.0"
}
packagingOptions {
pickFirst '**/libjsc.so'
pickFirst '**/libc++_shared.so'
}
}


configurations.all {
resolutionStrategy {
force 'org.webkit:android-jsc:r236355'
}
}

dependencies {
// compile fileTree(dir: 'libs', include: ['*.jar'])
implementation fileTree(dir: 'libs', include: ['*.jar'])

implementation 'com.google.firebase:firebase-core:16.0.0'
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:design:28.0.0'
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'com.facebook.react:react-native:+'
implementation 'org.webkit:android-jsc-intl:+'
implementation project(':react-native-notifications')

testImplementation'junit:junit:4.12'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,40 +1,11 @@
package com.wix.reactnativenotifications.app;

import android.os.Build;
import android.os.Bundle;
import android.view.ViewGroup;
import android.widget.Toolbar;

import com.facebook.react.ReactActivity;
import com.facebook.react.ReactRootView;

import static android.os.Build.VERSION.SDK_INT;

public class MainActivity extends ReactActivity {

private ReactRootView mReactRootView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

ViewGroup layout;
if (SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
layout = (ViewGroup) getLayoutInflater().inflate(R.layout.activity_main, null);
Toolbar toolbar = layout.findViewById(R.id.toolbar);
setActionBar(toolbar);
} else {
layout = (ViewGroup) getLayoutInflater().inflate(R.layout.activity_main_prelollipop, null);
}
mReactRootView = new ReactRootView(this);
layout.addView(mReactRootView);

setContentView(layout);

startReactApplication();
}

private void startReactApplication() {
mReactRootView.startReactApplication(getReactInstanceManager(), "WixRNNotifications", null);
protected String getMainComponentName() {
return "WixRNNotifications";
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,18 @@
import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;
import com.facebook.react.shell.MainReactPackage;
import com.facebook.soloader.SoLoader;
import com.wix.reactnativenotifications.RNNotificationsPackage;

import java.util.Arrays;
import java.util.List;

public class MainApplication extends Application implements ReactApplication {
@Override
public void onCreate() {
super.onCreate();
SoLoader.init(this, false);
}

private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
@Override
Expand Down

This file was deleted.

This file was deleted.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
"sinon": "^1.17.3",
"sinon-chai": "^2.8.0",
"shell-utils": "1.x.x",
"react-native": "0.59.5",
"react-native": "0.60.5",
"react": "16.8.6",
"detox": "13.x.x",
"jsc-android": "236355.x.x",
Expand Down
2 changes: 1 addition & 1 deletion scripts/test-unit.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ function run() {
}

function runAndroidUnitTests() {
const conf = release ? 'testReleaseUnitTest' : 'testDebugUnitTest';
const conf = release ? 'testReactNative60ReleaseUnitTest' : 'testReactNative60DebugUnitTest';
if (android && process.env.JENKINS_CI) {
const sdkmanager = '/usr/local/share/android-sdk/tools/bin/sdkmanager';
exec.execSync(`yes | ${sdkmanager} --licenses`);
Expand Down