Skip to content

Commit 6da0bbe

Browse files
committed
feat: update Android and iOS SDKs
- add support for prompt visibility change events - add support for controlling report incident button visibility
1 parent 5d4556d commit 6da0bbe

30 files changed

Lines changed: 148 additions & 37 deletions

CARPLAY.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ This guide explains how to enable and integrate Apple CarPlay with the React Nat
44

55
## Requirements
66

7-
- iOS device or iOS simulator (iOS 15.0+)
7+
- iOS device or iOS simulator (iOS 16.0+)
88
- CarPlay Simulator
99
- CarPlay entitlement for your application (provided by Apple)
1010

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ This repository contains a React Native plugin that provides a [Google Navigatio
1515

1616
| | Android | iOS |
1717
| ------------------------------- | ------- | --------- |
18-
| **Minimum mobile OS supported** | SDK 23+ | iOS 15.0+ |
18+
| **Minimum mobile OS supported** | SDK 23+ | iOS 16.0+ |
1919

2020
* A React Native project
2121
* A Google Cloud project

android/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
import groovy.json.JsonSlurper
1616

1717
buildscript {
18-
ext.kotlin_version = '2.0.0'
18+
ext.kotlin_version = '2.1.21'
1919
repositories {
2020
google()
2121
mavenCentral()
@@ -39,7 +39,7 @@ if (isNewArchitectureEnabled()) {
3939

4040
android {
4141
namespace "com.google.android.react.navsdk"
42-
compileSdkVersion 34
42+
compileSdkVersion 35
4343

4444
compileOptions {
4545
sourceCompatibility JavaVersion.VERSION_1_8
@@ -76,6 +76,6 @@ dependencies {
7676
implementation "androidx.car.app:app-projected:1.4.0"
7777
implementation 'com.facebook.react:react-native:+'
7878
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
79-
implementation "com.google.android.libraries.navigation:navigation:6.1.0"
79+
implementation "com.google.android.libraries.navigation:navigation:6.3.1"
8080
api 'com.google.guava:guava:31.0.1-android'
8181
}

android/src/main/java/com/google/android/react/navsdk/Command.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,8 @@ public enum Command {
5555
REMOVE_GROUND_OVERLAY(36, "removeGroundOverlay"),
5656
SET_ZOOM_CONTROLS_ENABLED(37, "setZoomControlsEnabled"),
5757
SET_RECENTER_BUTTON_ENABLED(38, "setRecenterButtonEnabled"),
58-
SET_PADDING(39, "setPadding");
58+
SET_PADDING(39, "setPadding"),
59+
SET_REPORT_INCIDENT_BUTTON_ENABLED(40, "setReportIncidentButtonEnabled");
5960

6061
private final int value;
6162
private final String name;

android/src/main/java/com/google/android/react/navsdk/INavViewFragment.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,6 @@ public interface INavViewFragment extends IMapViewFragment {
3333
void showRouteOverview();
3434

3535
void setNightModeOption(int jsValue);
36+
37+
void setReportIncidentButtonEnabled(boolean enabled);
3638
}

android/src/main/java/com/google/android/react/navsdk/INavigationViewCallback.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@
2323
public interface INavigationViewCallback {
2424
void onMapReady();
2525

26-
void onRecenterButtonClick();
27-
2826
void onMarkerClick(Marker marker);
2927

3028
void onPolylineClick(Polyline polyline);

android/src/main/java/com/google/android/react/navsdk/MapViewFragment.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -91,11 +91,6 @@ public void onMapReady() {
9191
emitEvent("onMapReady", null);
9292
}
9393

94-
@Override
95-
public void onRecenterButtonClick() {
96-
emitEvent("onRecenterButtonClick", null);
97-
}
98-
9994
@Override
10095
public void onMarkerClick(Marker marker) {
10196
emitEvent("onMarkerClick", ObjectTranslationUtil.getMapFromMarker(marker));

android/src/main/java/com/google/android/react/navsdk/NavViewFragment.java

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import com.google.android.gms.maps.model.Polygon;
3434
import com.google.android.gms.maps.model.Polyline;
3535
import com.google.android.libraries.navigation.NavigationView;
36+
import com.google.android.libraries.navigation.PromptVisibilityChangedListener;
3637
import com.google.android.libraries.navigation.StylingOptions;
3738
import com.google.android.libraries.navigation.SupportNavigationFragment;
3839

@@ -55,14 +56,24 @@ public NavViewFragment(ReactApplicationContext reactContext, int viewTag) {
5556
this.viewTag = viewTag;
5657
}
5758

58-
private NavigationView.OnRecenterButtonClickedListener onRecenterButtonClickedListener =
59+
private final NavigationView.OnRecenterButtonClickedListener onRecenterButtonClickedListener =
5960
new NavigationView.OnRecenterButtonClickedListener() {
6061
@Override
6162
public void onRecenterButtonClick() {
6263
emitEvent("onRecenterButtonClick", null);
6364
}
6465
};
6566

67+
private final PromptVisibilityChangedListener onPromptVisibilityChangedListener =
68+
new PromptVisibilityChangedListener() {
69+
@Override
70+
public void onVisibilityChanged(boolean isVisible) {
71+
WritableMap map = Arguments.createMap();
72+
map.putBoolean("visible", isVisible);
73+
emitEvent("onPromptVisibilityChanged", map);
74+
}
75+
};
76+
6677
private String style = "";
6778

6879
@SuppressLint("MissingPermission")
@@ -87,6 +98,7 @@ public void onMapReady(GoogleMap googleMap) {
8798

8899
setNavigationUiEnabled(NavModule.getInstance().getNavigator() != null);
89100
addOnRecenterButtonClickedListener(onRecenterButtonClickedListener);
101+
addPromptVisibilityChangedListener(onPromptVisibilityChangedListener);
90102
}
91103
});
92104
}
@@ -118,11 +130,6 @@ public void onMapReady() {
118130
emitEvent("onMapReady", null);
119131
}
120132

121-
@Override
122-
public void onRecenterButtonClick() {
123-
emitEvent("onRecenterButtonClick", null);
124-
}
125-
126133
@Override
127134
public void onMarkerClick(Marker marker) {
128135
emitEvent("onMarkerClick", ObjectTranslationUtil.getMapFromMarker(marker));
@@ -176,6 +183,7 @@ public GoogleMap getGoogleMap() {
176183

177184
private void cleanup() {
178185
removeOnRecenterButtonClickedListener(onRecenterButtonClickedListener);
186+
removePromptVisibilityChangedListener(onPromptVisibilityChangedListener);
179187
}
180188

181189
private void emitEvent(String eventName, @Nullable WritableMap data) {

android/src/main/java/com/google/android/react/navsdk/NavViewManager.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,10 @@ public void receiveCommand(
303303
getFragmentForRoot(root)
304304
.getMapController()
305305
.setPadding(args.getInt(0), args.getInt(1), args.getInt(2), args.getInt(3));
306+
break;
307+
case SET_REPORT_INCIDENT_BUTTON_ENABLED:
308+
getNavFragmentForRoot(root).setReportIncidentButtonEnabled(args.getBoolean(0));
309+
break;
306310
}
307311
}
308312

@@ -318,6 +322,9 @@ public Map<String, Object> getExportedCustomDirectEventTypeConstants() {
318322
.put(
319323
"onRecenterButtonClick",
320324
MapBuilder.of("registrationName", "onRecenterButtonClick"))
325+
.put(
326+
"onPromptVisibilityChanged",
327+
MapBuilder.of("registrationName", "onPromptVisibilityChanged"))
321328
.put("onMapReady", MapBuilder.of("registrationName", "onMapReady"))
322329
.put("onMapClick", MapBuilder.of("registrationName", "onMapClick"))
323330
.put("onMarkerClick", MapBuilder.of("registrationName", "onMarkerClick"))

example/android/app/build.gradle

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,10 @@ def enableProguardInReleaseBuilds = true
7878

7979

8080
/**
81-
* Set this to true to enable desugaring if minSdkVersion is set to 34 or below.
82-
* Note that this currently affects Detox testing with release builds and therefore is not enabled by default.
81+
* Desugaring is required to be set on from navigation-sdk version 6.3.0 onwards.
82+
* Note that this enableDesugaring currently affects Detox testing with release builds.
8383
*/
84-
def enableDesugaring = false
84+
def enableDesugaring = true
8585

8686
/**
8787
* The preferred build flavor of JavaScriptCore (JSC)
@@ -155,7 +155,7 @@ dependencies {
155155
implementation "androidx.car.app:app-projected:1.4.0"
156156

157157
// Include the Google Navigation SDK.
158-
implementation 'com.google.android.libraries.navigation:navigation:6.1.0'
158+
implementation 'com.google.android.libraries.navigation:navigation:6.3.1'
159159

160160
// Desugar Java 8+ APIs
161161
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.3'

0 commit comments

Comments
 (0)