From 6a23413a486e782eae6a9a6c9b69359d99d2e2ea Mon Sep 17 00:00:00 2001 From: Russell Cullen Date: Fri, 20 Jul 2018 15:29:01 -0400 Subject: [PATCH 1/2] Update native code to sdk 2.0.0 --- android/build.gradle | 23 +++++++++++---- .../gradle/wrapper/gradle-wrapper.properties | 4 +-- android/gradlew | 0 android/src/main/AndroidManifest.xml | 6 ++-- .../radar}/react/RNRadarModule.java | 29 +++++++++---------- .../radar}/react/RNRadarPackage.java | 2 +- .../radar}/react/RNRadarReceiver.java | 10 +++---- .../radar}/react/RNRadarUtils.java | 18 ++++++------ ios/RNRadar.m | 12 ++++++-- ios/RNRadarUtils.m | 2 -- package.json | 2 +- 11 files changed, 61 insertions(+), 47 deletions(-) mode change 100644 => 100755 android/gradlew rename android/src/main/java/{com/onradar => io/radar}/react/RNRadarModule.java (86%) rename android/src/main/java/{com/onradar => io/radar}/react/RNRadarPackage.java (96%) rename android/src/main/java/{com/onradar => io/radar}/react/RNRadarReceiver.java (94%) rename android/src/main/java/{com/onradar => io/radar}/react/RNRadarUtils.java (96%) diff --git a/android/build.gradle b/android/build.gradle index 196def91..29eb915c 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,24 +1,27 @@ buildscript { repositories { + maven { + url 'https://maven.google.com' + } jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:1.3.1' + classpath 'com.android.tools.build:gradle:3.1.3' } } apply plugin: 'com.android.library' android { - compileSdkVersion 26 - buildToolsVersion '26.0.1' + compileSdkVersion 27 + buildToolsVersion '27.0.3' defaultConfig { minSdkVersion 16 - targetSdkVersion 26 + targetSdkVersion 27 versionCode 1 - versionName '1.0.9' + versionName '2.0.0' } lintOptions { abortOnError false @@ -27,9 +30,17 @@ android { repositories { mavenCentral() + maven { + url 'https://maven.google.com' + } + jcenter() + maven { + // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm + url "$rootDir/../node_modules/react-native/android" + } } dependencies { compile 'com.facebook.react:react-native:+' - compile 'com.onradar:sdk:1.2.+' + compile 'io.radar:sdk:2.0.+' } diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 2d71d04a..30aa2d02 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Mon Apr 10 16:29:28 EDT 2017 +#Thu Jul 19 10:39:56 EDT 2018 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip diff --git a/android/gradlew b/android/gradlew old mode 100644 new mode 100755 diff --git a/android/src/main/AndroidManifest.xml b/android/src/main/AndroidManifest.xml index 4c021983..bbba27b3 100644 --- a/android/src/main/AndroidManifest.xml +++ b/android/src/main/AndroidManifest.xml @@ -1,13 +1,13 @@ + package="io.radar.react"> - + diff --git a/android/src/main/java/com/onradar/react/RNRadarModule.java b/android/src/main/java/io/radar/react/RNRadarModule.java similarity index 86% rename from android/src/main/java/com/onradar/react/RNRadarModule.java rename to android/src/main/java/io/radar/react/RNRadarModule.java index 1864af5f..62063678 100644 --- a/android/src/main/java/com/onradar/react/RNRadarModule.java +++ b/android/src/main/java/io/radar/react/RNRadarModule.java @@ -1,11 +1,11 @@ -package com.onradar.react; +package io.radar.react; +import android.Manifest; import android.app.Activity; -import android.content.Context; -import android.content.IntentFilter; +import android.content.pm.PackageManager; import android.location.Location; import android.support.annotation.NonNull; - +import android.support.v4.app.ActivityCompat; import com.facebook.react.bridge.Arguments; import com.facebook.react.bridge.Promise; import com.facebook.react.bridge.ReactApplicationContext; @@ -13,13 +13,10 @@ import com.facebook.react.bridge.ReactMethod; import com.facebook.react.bridge.ReadableMap; import com.facebook.react.bridge.WritableMap; -import com.facebook.react.bridge.ReactContext; - -import com.onradar.sdk.Radar; -import com.onradar.sdk.RadarCallback; -import com.onradar.sdk.RadarReceiver; -import com.onradar.sdk.model.RadarEvent; -import com.onradar.sdk.model.RadarUser; +import io.radar.sdk.Radar; +import io.radar.sdk.Radar.RadarCallback; +import io.radar.sdk.model.RadarEvent; +import io.radar.sdk.model.RadarUser; public class RNRadarModule extends ReactContextBaseJavaModule { @@ -49,14 +46,16 @@ public void setPlacesProvider(String providerStr) { @ReactMethod public void getPermissionsStatus(Promise promise) { - promise.resolve(RNRadarUtils.stringForPermissionsStatus(Radar.checkSelfPermissions())); + promise.resolve(RNRadarUtils.stringForPermissionsStatus( + ActivityCompat.checkSelfPermission(getReactApplicationContext(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED + )); } @ReactMethod public void requestPermissions(boolean background) { Activity activity = getCurrentActivity(); if (activity != null) { - Radar.requestPermissions(activity); + ActivityCompat.requestPermissions(activity, new String[] { Manifest.permission.ACCESS_FINE_LOCATION }, 0); } } @@ -74,7 +73,7 @@ public void stopTracking() { public void trackOnce(final Promise promise) { Radar.trackOnce(new RadarCallback() { @Override - public void onCallback(@NonNull Radar.RadarStatus status, Location location, RadarEvent[] events, RadarUser user) { + public void onComplete(@NonNull Radar.RadarStatus status, Location location, RadarEvent[] events, RadarUser user) { if (promise == null) return; @@ -106,7 +105,7 @@ public void updateLocation(ReadableMap locationMap, final Promise promise) { location.setAccuracy(accuracy); Radar.updateLocation(location, new RadarCallback() { @Override - public void onCallback(@NonNull Radar.RadarStatus status, Location location, RadarEvent[] events, RadarUser user) { + public void onComplete(@NonNull Radar.RadarStatus status, Location location, RadarEvent[] events, RadarUser user) { if (promise == null) return; diff --git a/android/src/main/java/com/onradar/react/RNRadarPackage.java b/android/src/main/java/io/radar/react/RNRadarPackage.java similarity index 96% rename from android/src/main/java/com/onradar/react/RNRadarPackage.java rename to android/src/main/java/io/radar/react/RNRadarPackage.java index 3a2da6f8..7e86c1c8 100644 --- a/android/src/main/java/com/onradar/react/RNRadarPackage.java +++ b/android/src/main/java/io/radar/react/RNRadarPackage.java @@ -1,4 +1,4 @@ -package com.onradar.react; +package io.radar.react; import java.util.Arrays; import java.util.Collections; diff --git a/android/src/main/java/com/onradar/react/RNRadarReceiver.java b/android/src/main/java/io/radar/react/RNRadarReceiver.java similarity index 94% rename from android/src/main/java/com/onradar/react/RNRadarReceiver.java rename to android/src/main/java/io/radar/react/RNRadarReceiver.java index 6bbab7d1..0febfe70 100644 --- a/android/src/main/java/com/onradar/react/RNRadarReceiver.java +++ b/android/src/main/java/io/radar/react/RNRadarReceiver.java @@ -1,4 +1,4 @@ -package com.onradar.react; +package io.radar.react; import android.content.Context; import android.location.Location; @@ -12,10 +12,10 @@ import com.facebook.react.bridge.WritableMap; import com.facebook.react.modules.core.DeviceEventManagerModule; -import com.onradar.sdk.Radar; -import com.onradar.sdk.RadarReceiver; -import com.onradar.sdk.model.RadarEvent; -import com.onradar.sdk.model.RadarUser; +import io.radar.sdk.Radar; +import io.radar.sdk.RadarReceiver; +import io.radar.sdk.model.RadarEvent; +import io.radar.sdk.model.RadarUser; public class RNRadarReceiver extends RadarReceiver { diff --git a/android/src/main/java/com/onradar/react/RNRadarUtils.java b/android/src/main/java/io/radar/react/RNRadarUtils.java similarity index 96% rename from android/src/main/java/com/onradar/react/RNRadarUtils.java rename to android/src/main/java/io/radar/react/RNRadarUtils.java index 265761ff..9c60b6e9 100644 --- a/android/src/main/java/com/onradar/react/RNRadarUtils.java +++ b/android/src/main/java/io/radar/react/RNRadarUtils.java @@ -1,18 +1,18 @@ -package com.onradar.react; +package io.radar.react; import android.location.Location; import com.facebook.react.bridge.Arguments; import com.facebook.react.bridge.WritableArray; import com.facebook.react.bridge.WritableMap; -import com.onradar.sdk.Radar; -import com.onradar.sdk.model.RadarEvent; -import com.onradar.sdk.model.RadarGeofence; -import com.onradar.sdk.model.RadarPlace; -import com.onradar.sdk.model.RadarUser; -import com.onradar.sdk.model.RadarUserInsights; -import com.onradar.sdk.model.RadarUserInsightsLocation; -import com.onradar.sdk.model.RadarUserInsightsState; +import io.radar.sdk.Radar; +import io.radar.sdk.model.RadarEvent; +import io.radar.sdk.model.RadarGeofence; +import io.radar.sdk.model.RadarPlace; +import io.radar.sdk.model.RadarUser; +import io.radar.sdk.model.RadarUserInsights; +import io.radar.sdk.model.RadarUserInsightsLocation; +import io.radar.sdk.model.RadarUserInsightsState; class RNRadarUtils { diff --git a/ios/RNRadar.m b/ios/RNRadar.m index c098bba7..153f0ab7 100644 --- a/ios/RNRadar.m +++ b/ios/RNRadar.m @@ -8,6 +8,7 @@ @implementation RNRadar { BOOL hasListeners; + CLLocationManager *locationManager; } RCT_EXPORT_MODULE(); @@ -16,10 +17,15 @@ - (instancetype)init { self = [super init]; if (self) { [Radar setDelegate:self]; + locationManager = [CLLocationManager new]; } return self; } ++ (BOOL)requiresMainQueueSetup { + return YES; +} + - (NSArray *)supportedEvents { return @[@"events", @"location", @"error"]; } @@ -63,14 +69,14 @@ - (void)didFailWithStatus:(RadarStatus)status { } RCT_REMAP_METHOD(getPermissionsStatus, getPermissionsStatusWithResolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) { - resolve([RNRadarUtils stringForPermissionsStatus:[Radar authorizationStatus]]); + resolve([RNRadarUtils stringForPermissionsStatus:[CLLocationManager authorizationStatus]]); } RCT_EXPORT_METHOD(requestPermissions:(BOOL)background) { if (background) { - [Radar requestAlwaysAuthorization]; + [locationManager requestAlwaysAuthorization]; } else { - [Radar requestWhenInUseAuthorization]; + [locationManager requestWhenInUseAuthorization]; } } diff --git a/ios/RNRadarUtils.m b/ios/RNRadarUtils.m index b8696750..c75bb820 100644 --- a/ios/RNRadarUtils.m +++ b/ios/RNRadarUtils.m @@ -23,8 +23,6 @@ + (NSString *)stringForStatus:(RadarStatus)status { return @"SUCCESS"; case RadarStatusErrorPublishableKey: return @"ERROR_PUBLISHABLE_KEY"; - case RadarStatusErrorUserId: - return @"ERROR_USER_ID"; case RadarStatusErrorPermissions: return @"ERROR_PERMISSIONS"; case RadarStatusErrorLocation: diff --git a/package.json b/package.json index 96389dbf..3f9e9bdd 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "React Native module for Radar, the location platform for mobile apps", "homepage": "https://radar.io", "license": "Apache-2.0", - "version": "1.0.17", + "version": "2.0.0", "main": "js/index.js", "dependencies": {}, "peerDependencies": { From 7c94f1ed9750efa1d80887bb24911c77ed349f33 Mon Sep 17 00:00:00 2001 From: Russell Cullen Date: Fri, 20 Jul 2018 15:59:30 -0400 Subject: [PATCH 2/2] Update README --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index e475cb65..b55ac7d6 100644 --- a/README.md +++ b/README.md @@ -37,11 +37,11 @@ On iOS, you must add location usage descriptions and background modes to your `I On Android, you must add the Google Play Services library to your project, then add the SDK to your project, preferably using Gradle. Finally, initialize the SDK in `onCreate()` in `MainApplication.java`, passing in your Radar publishable API key: ```java -import com.onradar.sdk.Radar; +import io.radar.sdk.Radar; // ... -Radar.initialize(getApplicationContext(), publishableKey); +Radar.initialize(publishableKey); ``` To get a Radar publishable API key, [sign up for a Radar account](https://radar.io). @@ -139,7 +139,6 @@ Radar.trackOnce().then((result) => { `err` will be a string, one of: - `ERROR_PUBLISHABLE_KEY`: the SDK was not initialized -- `ERROR_USER_ID`: the user was not identified - `ERROR_PERMISSIONS`: the user has not granted location permissions for the app - `ERROR_LOCATION`: location services were unavailable, or the location request timed out - `ERROR_NETWORK`: the network was unavailable, or the network connection timed out