react-native-background-geolocation 5.0.4 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +65 -291
- package/RNBackgroundGeolocation.podspec +1 -2
- package/android/build.gradle +1 -1
- package/assets/images/platforms/android.svg +5 -0
- package/assets/images/platforms/capacitor.svg +5 -0
- package/assets/images/platforms/cordova.svg +5 -0
- package/assets/images/platforms/expo.svg +5 -0
- package/assets/images/platforms/flutter.svg +5 -0
- package/assets/images/platforms/ios.svg +5 -0
- package/assets/images/platforms/kotlin.svg +5 -0
- package/assets/images/platforms/react-native.svg +5 -0
- package/assets/images/platforms/swift.svg +5 -0
- package/expo/plugin/build/androidPlugin.js +16 -12
- package/expo/plugin/build/androidPlugin.js.map +1 -1
- package/package.json +1 -2
- package/.vscode/settings.json +0 -3
package/README.md
CHANGED
|
@@ -1,291 +1,65 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Background Geolocation for React Native &
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
### With `npm`
|
|
67
|
-
```
|
|
68
|
-
$ npm install react-native-background-geolocation --save
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
## :large_blue_diamond: Setup Guides
|
|
72
|
-
|
|
73
|
-
### Expo
|
|
74
|
-
- [Expo Setup](help/INSTALL-EXPO.md)
|
|
75
|
-
|
|
76
|
-
### iOS
|
|
77
|
-
- [Auto-linking Setup](help/INSTALL-IOS-AUTO.md)
|
|
78
|
-
|
|
79
|
-
### Android
|
|
80
|
-
- [Auto-linking Setup](help/INSTALL-ANDROID-AUTO.md)
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
## :large_blue_diamond: Configure your license
|
|
84
|
-
|
|
85
|
-
1. Login to Customer Dashboard to generate an application key:
|
|
86
|
-
[www.transistorsoft.com/shop/customers](http://www.transistorsoft.com/shop/customers)
|
|
87
|
-

|
|
88
|
-
|
|
89
|
-
2. __`[Android]`__ Add your license-key to `android/app/src/main/AndroidManifest.xml`:
|
|
90
|
-
|
|
91
|
-
```diff
|
|
92
|
-
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
|
93
|
-
package="com.transistorsoft.backgroundgeolocation.react">
|
|
94
|
-
|
|
95
|
-
<application
|
|
96
|
-
android:name=".MainApplication"
|
|
97
|
-
android:allowBackup="true"
|
|
98
|
-
android:label="@string/app_name"
|
|
99
|
-
android:icon="@mipmap/ic_launcher"
|
|
100
|
-
android:theme="@style/AppTheme">
|
|
101
|
-
|
|
102
|
-
<!-- react-native-background-geolocation licence -->
|
|
103
|
-
+ <meta-data android:name="com.transistorsoft.locationmanager.license" android:value="YOUR_ANDROID_LICENCE_KEY_HERE" />
|
|
104
|
-
.
|
|
105
|
-
.
|
|
106
|
-
.
|
|
107
|
-
</application>
|
|
108
|
-
</manifest>
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
3. __`[iOS]`__ Add your license-key to your __`Info.plist`__
|
|
112
|
-
|
|
113
|
-
| Key | Type | Value |
|
|
114
|
-
|-----|-------|-------------|
|
|
115
|
-
| *`TSLocationManagerLicense`* | `String` | ` <PASTE YOUR IOS LICENSE KEY HERE> ` |
|
|
116
|
-
|
|
117
|
-
__`TSLocationManagerLicense`__. Paste the contents of your license key into the __`value`__.
|
|
118
|
-
|
|
119
|
-
## :large_blue_diamond: Using the plugin ##
|
|
120
|
-
|
|
121
|
-
```javascript
|
|
122
|
-
import BackgroundGeolocation from "react-native-background-geolocation";
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
## :large_blue_diamond: Example
|
|
126
|
-
|
|
127
|
-
There are three main steps to using `BackgroundGeolocation`
|
|
128
|
-
1. Wire up event-listeners.
|
|
129
|
-
2. `.ready(config)` the plugin.
|
|
130
|
-
3. `.start()` the plugin.
|
|
131
|
-
|
|
132
|
-
> [!WARNING]
|
|
133
|
-
> Do not execute *any* API method which will require accessing location-services until the **[`.ready(config)`](https://transistorsoft.github.io/react-native-background-geolocation/latest/interfaces/BackgroundGeolocation.html#ready)** method resolves ([Read its API docs](https://transistorsoft.github.io/react-native-background-geolocation/latest/interfaces/BackgroundGeolocation.html#ready)), For example:
|
|
134
|
-
>- `.getCurrentPosition`
|
|
135
|
-
>- `.watchPosition`
|
|
136
|
-
>- `.start`
|
|
137
|
-
|
|
138
|
-
```javascript
|
|
139
|
-
// NO! .ready() has not resolved.
|
|
140
|
-
await BackgroundGeolocation.getCurrentPosition(options);
|
|
141
|
-
await BackgroundGeolocation.start();
|
|
142
|
-
|
|
143
|
-
// First call .ready(config)
|
|
144
|
-
const state = await BackgroundGeolocation.ready(config);
|
|
145
|
-
const location = await BackgroundGeolocation.getCurrentPosition(options);
|
|
146
|
-
await BackgroundGeolocation.start();
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
// NO! .ready() has not resolved.
|
|
150
|
-
const location = await BackgroundGeolocation.getCurrentPosition(options);
|
|
151
|
-
await BackgroundGeolocation.start();
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
### Example
|
|
156
|
-
|
|
157
|
-
```javascript
|
|
158
|
-
|
|
159
|
-
import React from 'react';
|
|
160
|
-
import {
|
|
161
|
-
Switch,
|
|
162
|
-
Text,
|
|
163
|
-
View,
|
|
164
|
-
} from 'react-native';
|
|
165
|
-
|
|
166
|
-
import BackgroundGeolocation, {
|
|
167
|
-
Location,
|
|
168
|
-
Subscription
|
|
169
|
-
} from "react-native-background-geolocation";
|
|
170
|
-
|
|
171
|
-
const HelloWorld = () => {
|
|
172
|
-
const [enabled, setEnabled] = React.useState(false);
|
|
173
|
-
const [location, setLocation] = React.useState('');
|
|
174
|
-
|
|
175
|
-
React.useEffect(() => {
|
|
176
|
-
/// 1. Subscribe to events.
|
|
177
|
-
const onLocation:Subscription = BackgroundGeolocation.onLocation((location) => {
|
|
178
|
-
console.log('[onLocation]', location);
|
|
179
|
-
setLocation(JSON.stringify(location, null, 2));
|
|
180
|
-
})
|
|
181
|
-
|
|
182
|
-
const onMotionChange:Subscription = BackgroundGeolocation.onMotionChange((event) => {
|
|
183
|
-
console.log('[onMotionChange]', event);
|
|
184
|
-
});
|
|
185
|
-
|
|
186
|
-
const onActivityChange:Subscription = BackgroundGeolocation.onActivityChange((event) => {
|
|
187
|
-
console.log('[onActivityChange]', event);
|
|
188
|
-
})
|
|
189
|
-
|
|
190
|
-
const onProviderChange:Subscription = BackgroundGeolocation.onProviderChange((event) => {
|
|
191
|
-
console.log('[onProviderChange]', event);
|
|
192
|
-
})
|
|
193
|
-
|
|
194
|
-
/// 2. ready the plugin.
|
|
195
|
-
BackgroundGeolocation.ready({
|
|
196
|
-
// Geolocation Config
|
|
197
|
-
geolocation: {
|
|
198
|
-
desiredAccuracy: BackgroundGeolocation.DesiredAccuracy.High
|
|
199
|
-
distanceFilter: 10,
|
|
200
|
-
stopTimeout: 5
|
|
201
|
-
},
|
|
202
|
-
// Logger Config
|
|
203
|
-
logger: {
|
|
204
|
-
debug: true, // <-- enable this hear sounds for background-geolocation life-cycle.
|
|
205
|
-
logLevel: BackgroundGeolocation.LogLevel.Verbose
|
|
206
|
-
},
|
|
207
|
-
// Application config
|
|
208
|
-
app: {
|
|
209
|
-
stopOnTerminate: false, // <-- Allow the background-service to continue tracking when user closes the app.
|
|
210
|
-
startOnBoot: true // <-- Auto start tracking when device is powered-up.
|
|
211
|
-
},
|
|
212
|
-
// Http Config
|
|
213
|
-
http: {
|
|
214
|
-
url: 'http://yourserver.com/locations',
|
|
215
|
-
batchSync: false, // <-- [Default: false] Set true to sync locations to server in a single HTTP request.
|
|
216
|
-
autoSync: true, // <-- [Default: true] Set true to sync each location to server as it arrives.
|
|
217
|
-
headers: { // <-- Optional HTTP headers
|
|
218
|
-
"X-FOO": "bar"
|
|
219
|
-
},
|
|
220
|
-
params: { // <-- Optional HTTP params
|
|
221
|
-
"auth_token": "maybe_your_server_authenticates_via_token_YES?"
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
}).then((state) => {
|
|
225
|
-
setEnabled(state.enabled)
|
|
226
|
-
console.log("- BackgroundGeolocation is configured and ready: ", state.enabled);
|
|
227
|
-
});
|
|
228
|
-
|
|
229
|
-
return () => {
|
|
230
|
-
// Remove BackgroundGeolocation event-subscribers when the View is removed or refreshed
|
|
231
|
-
// during development live-reload. Without this, event-listeners will accumulate with
|
|
232
|
-
// each refresh during live-reload.
|
|
233
|
-
onLocation.remove();
|
|
234
|
-
onMotionChange.remove();
|
|
235
|
-
onActivityChange.remove();
|
|
236
|
-
onProviderChange.remove();
|
|
237
|
-
}
|
|
238
|
-
}, []);
|
|
239
|
-
|
|
240
|
-
/// 3. start / stop BackgroundGeolocation
|
|
241
|
-
React.useEffect(() => {
|
|
242
|
-
if (enabled) {
|
|
243
|
-
BackgroundGeolocation.start();
|
|
244
|
-
} else {
|
|
245
|
-
BackgroundGeolocation.stop();
|
|
246
|
-
setLocation('');
|
|
247
|
-
}
|
|
248
|
-
}, [enabled]);
|
|
249
|
-
|
|
250
|
-
return (
|
|
251
|
-
<View style={{alignItems:'center'}}>
|
|
252
|
-
<Text>Click to enable BackgroundGeolocation</Text>
|
|
253
|
-
<Switch value={enabled} onValueChange={setEnabled} />
|
|
254
|
-
<Text style={{fontFamily:'monospace', fontSize:12}}>{location}</Text>
|
|
255
|
-
</View>
|
|
256
|
-
)
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
export default HelloWorld;
|
|
260
|
-
```
|
|
261
|
-
|
|
262
|
-
## :large_blue_diamond: [Demo Application](example)
|
|
263
|
-
|
|
264
|
-
Clone this repo and see apps in [/example](example) folder.
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
# License
|
|
268
|
-
|
|
269
|
-
The MIT License (MIT)
|
|
270
|
-
|
|
271
|
-
Copyright (c) 2018 Chris Scott, Transistor Software
|
|
272
|
-
|
|
273
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
274
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
275
|
-
in the Software without restriction, including without limitation the rights
|
|
276
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
277
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
278
|
-
furnished to do so, subject to the following conditions:
|
|
279
|
-
|
|
280
|
-
The above copyright notice and this permission notice shall be included in all
|
|
281
|
-
copies or substantial portions of the Software.
|
|
282
|
-
|
|
283
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
284
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
285
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
286
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
287
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
288
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
289
|
-
SOFTWARE.
|
|
290
|
-
|
|
291
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="https://raw.githubusercontent.com/transistorsoft/assets/master/images/logos/transistor/transistor-logo-panel-react-native.svg" alt="Background Geolocation for React Native" width="635">
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
# Background Geolocation for React Native & Expo
|
|
6
|
+
|
|
7
|
+
[]() []()
|
|
8
|
+
|
|
9
|
+
The most sophisticated background **location-tracking & geofencing** SDK with battery-conscious motion-detection intelligence for **iOS** and **Android**.
|
|
10
|
+
|
|
11
|
+
The SDK uses **motion-detection** APIs (accelerometer, gyroscope, magnetometer) to detect when the device is *moving* or *stationary*:
|
|
12
|
+
|
|
13
|
+
- **Moving** — location recording starts automatically at the configured `distanceFilter` (metres)
|
|
14
|
+
- **Stationary** — location services turn off automatically to conserve battery
|
|
15
|
+
|
|
16
|
+
> [!IMPORTANT]
|
|
17
|
+
> This is **`v5`**. For the previous version see [`v4.x`](https://github.com/transistorsoft/react-native-background-geolocation/tree/4.19.4). **`v4.x`** license keys do **not** work with **`v5`** — log in to the [Customer Dashboard](https://transistorsoft.com) to generate a **`v5`** key. See the [Migration Guide](help/MIGRATION-GUIDE-5.0.0.md) for details.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## :books: Documentation
|
|
22
|
+
|
|
23
|
+
### <img src="assets/images/platforms/react-native.svg" width="20" height="20"> React Native
|
|
24
|
+
- [Setup](https://docs.transistorsoft.com/typescript/setup/?tab=react-native)
|
|
25
|
+
- [API Reference](https://docs.transistorsoft.com/typescript/BackgroundGeolocation/)
|
|
26
|
+
- [Example](https://docs.transistorsoft.com/typescript/examples/?tab=react-native)
|
|
27
|
+
|
|
28
|
+
### <img src="assets/images/platforms/expo.svg" width="20" height="20"> Expo
|
|
29
|
+
- [Setup](https://docs.transistorsoft.com/typescript/setup/?tab=expo)
|
|
30
|
+
- [API Reference](https://docs.transistorsoft.com/typescript/BackgroundGeolocation/)
|
|
31
|
+
- [Example](https://docs.transistorsoft.com/typescript/examples/?tab=react-native)
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## :key: Licensing
|
|
36
|
+
|
|
37
|
+
> [!TIP]
|
|
38
|
+
> The SDK is **fully functional in `DEBUG` builds** — no license required. Try before you buy.
|
|
39
|
+
|
|
40
|
+
A license is required only for **`RELEASE` builds** on Android.
|
|
41
|
+
[Purchase a license](https://shop.transistorsoft.com/products/react-native-background-geolocation)
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## :open_file_folder: Example Apps
|
|
46
|
+
|
|
47
|
+
See [`/example`](example/README.md) — example apps are included in this repo.
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## 📦 SDK availability
|
|
52
|
+
|
|
53
|
+
| Platform | Package |
|
|
54
|
+
|---|---|
|
|
55
|
+
| <img src="assets/images/platforms/react-native.svg" width="16" height="16"> React Native | **This repo** |
|
|
56
|
+
| <img src="assets/images/platforms/expo.svg" width="16" height="16"> Expo | **This repo** |
|
|
57
|
+
| <img src="assets/images/platforms/flutter.svg" width="16" height="16"> [Flutter](https://github.com/transistorsoft/flutter_background_geolocation) | `flutter_background_geolocation` |
|
|
58
|
+
| <img src="assets/images/platforms/capacitor.svg" width="16" height="16"> [Capacitor](https://github.com/transistorsoft/capacitor-background-geolocation) | `@transistorsoft/capacitor-background-geolocation` |
|
|
59
|
+
| <img src="assets/images/platforms/cordova.svg" width="16" height="16"> [Cordova](https://github.com/transistorsoft/cordova-background-geolocation-lt) | `cordova-background-geolocation-lt` |
|
|
60
|
+
| <img src="assets/images/platforms/swift.svg" width="16" height="16"> [Swift / iOS](https://github.com/transistorsoft/background-geolocation) | `background-geolocation` |
|
|
61
|
+
| <img src="assets/images/platforms/kotlin.svg" width="16" height="16"> [Kotlin / Android](https://github.com/transistorsoft/background-geolocation) | `background-geolocation` |
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
MIT © [Transistor Software](https://www.transistorsoft.com)
|
|
@@ -26,8 +26,7 @@ Pod::Spec.new do |s|
|
|
|
26
26
|
s.source_files = 'ios/RNBackgroundGeolocation/*.{h,m,mm}'
|
|
27
27
|
s.preserve_paths = 'docs', 'CHANGELOG.md', 'LICENSE', 'package.json', 'RNBackgroundGeolocation.ios.js'
|
|
28
28
|
|
|
29
|
-
s.dependency '
|
|
30
|
-
s.dependency 'TSLocationManager', '~> 4.0.10'
|
|
29
|
+
s.dependency 'TSLocationManager', '~> 4.1.0'
|
|
31
30
|
|
|
32
31
|
s.libraries = 'sqlite3', 'z', 'stdc++'
|
|
33
32
|
s.resource_bundles = {
|
package/android/build.gradle
CHANGED
|
@@ -9,7 +9,7 @@ def DEFAULT_TARGET_SDK_VERSION = 35
|
|
|
9
9
|
|
|
10
10
|
// Plugin dependencies
|
|
11
11
|
def DEFAULT_PLAY_SERVICES_LOCATION_VERSION = "21.3.0"
|
|
12
|
-
def DEFAULT_TSLOCATIONMANAGER_VERSION = "4.
|
|
12
|
+
def DEFAULT_TSLOCATIONMANAGER_VERSION = "4.1.+"
|
|
13
13
|
def DEFAULT_OK_HTTP_VERSION = "4.12.0"
|
|
14
14
|
def DEFAULT_ANDROID_PERMISSIONS_VERSION = "2.1.6"
|
|
15
15
|
def DEFAULT_EVENTBUS_VERSION = "3.3.1"
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<!-- Android — paths normalised to ±12-unit origin-centred canvas -->
|
|
3
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="-12 -12 24 24">
|
|
4
|
+
<g transform="scale(0.03566) translate(-2183.82,-196.50)"><path fill="#34A853" d="m 2520.38,377.22997 c -0.22,-1.378 -0.43,-2.74 -0.66,-4.102 -1.39,-8.451 -3.12,-16.803 -5.13,-25.041 -3.53,-14.391 -7.97,-28.437 -13.27,-42.04 -4.48,-11.52 -9.58,-22.727 -15.24,-33.59 -7.28,-13.948 -15.49,-27.338 -24.56,-40.072 -11.12,-15.605 -23.54,-30.225 -37.1,-43.697 -5.69,-5.662 -11.58,-11.126 -17.66,-16.361 -13.17,-11.371 -27.24,-21.725 -42.06,-30.98 0.13,-0.214 0.24,-0.443 0.37,-0.657 6.79,-11.732 13.6,-23.449 20.39,-35.181 6.64,-11.453998 13.28,-22.907998 19.92,-34.360998 4.78,-8.221 9.55,-16.459 14.3,-24.68 1.13,-1.953 2.02,-3.971 2.69,-6.038 1.86,-5.76 1.94,-11.815 0.45,-17.444 -0.38,-1.394 -0.84,-2.756 -1.4,-4.085 -0.56,-1.33 -1.21,-2.626 -1.95,-3.873 -2.54,-4.266 -6.17,-7.9749997 -10.73,-10.6829997 -4.03,-2.395 -8.54,-3.823 -13.16,-4.233 -1.94,-0.164 -3.89,-0.148 -5.83,0.049 -1.6,0.164 -3.19,0.46 -4.77,0.87 -5.62,1.493 -10.84,4.578 -14.9,9.0409997 -1.46,1.608 -2.78,3.381 -3.91,5.333 -4.77,8.221 -9.54,16.459 -14.3,24.68 l -19.92,34.361 c -6.79,11.733 -13.6,23.449 -20.39,35.181998 -0.74,1.279 -1.49,2.559 -2.23,3.856 -1.03,-0.411 -2.05,-0.821 -3.08,-1.215 -37.44,-14.275998 -78.06,-22.085998 -120.52,-22.085998 -1.16,0 -2.31,0 -3.48,0.016 -37.75,0.377 -74.02,6.941 -107.86,18.722998 -3.91,1.362 -7.78,2.806 -11.62,4.316 -0.69,-1.198 -1.4,-2.396 -2.08,-3.594 -6.79,-11.732998 -13.6,-23.448998 -20.39,-35.181998 -6.64,-11.453 -13.28,-22.907 -19.92,-34.361 -4.78,-8.221 -9.55,-16.458 -14.3,-24.679 -1.14,-1.953 -2.45,-3.725 -3.91,-5.333 -4.06,-4.4639997 -9.28,-7.5489997 -14.9,-9.0419997 -1.58,-0.41 -3.17,-0.705 -4.78,-0.869 -1.93,-0.197 -3.88,-0.214 -5.82,-0.05 -4.62,0.394 -9.13,1.822 -13.17,4.234 -4.56,2.707 -8.16,6.4159997 -10.72,10.6819997 -0.74,1.247 -1.4,2.544 -1.95,3.873 -0.56,1.329 -1.04,2.691 -1.4,4.086 -1.49,5.628 -1.41,11.683 0.44,17.443 0.68,2.068 1.56,4.086 2.69,6.039 4.78,8.221 9.55,16.458 14.3,24.679 6.65,11.454 13.29,22.908 19.93,34.360998 6.79,11.733 13.59,23.449 20.38,35.182 0.05,0.098 0.12,0.197 0.17,0.295 -13.7,8.517 -26.73,17.952 -39.03,28.273 -7.37,6.187 -14.47,12.668 -21.27,19.445 -13.55,13.472 -25.96,28.093 -37.1,43.698 -9.08,12.734 -17.3,26.107 -24.56,40.072 -5.66,10.863 -10.76,22.07 -15.24,33.59 -5.3,13.603 -9.74,27.649 -13.27,42.04 -2.01,8.238 -3.72,16.574 -5.13,25.041 -0.23,1.362 -0.44,2.74 -0.65,4.102 -0.76,4.907 -1.4,9.846 -1.94,14.818 h 673.11 c -0.54,-4.972 -1.18,-9.911 -1.93,-14.818 z"/><path fill="#202124" d="m 2360.79,298.98697 c 13.47,-8.966 15.43,-29.71 4.37,-46.331 -11.05,-16.622 -30.93,-22.827 -44.39,-13.861 -13.47,8.967 -15.43,29.71 -4.37,46.331 11.05,16.622 30.93,22.828 44.39,13.861 z"/><path fill="#202124" d="m 2055.6,285.18397 c 11.06,-16.622 9.1,-37.365 -4.37,-46.331 -13.47,-8.967 -33.34,-2.761 -44.4,13.86 -11.05,16.622 -9.09,37.365 4.37,46.331 13.47,8.967 33.35,2.761 44.4,-13.86 z"/></g>
|
|
5
|
+
</svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<!-- Capacitor — paths normalised to ±12-unit origin-centred canvas -->
|
|
3
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="-12 -12 24 24">
|
|
4
|
+
<defs><linearGradient id="capg" x1="-12" y1="0" x2="12" y2="0" gradientUnits="userSpaceOnUse"><stop offset="0%" stop-color="#75CEFF"/><stop offset="100%" stop-color="#4BAEFF"/></linearGradient></defs><polygon points="-12.0,-3.1 -5.9,3.0 -12.0,9.0 -9.1,12.0 -3.0,5.9 3.1,12.0 6.0,9.0 -9.0,-6.1" fill="url(#capg)"/><polygon points="12.0,-9.1 9.0,-12.0 3.0,-5.9 -3.1,-12.0 -6.1,-9.0 9.0,6.0 12.0,3.1 5.9,-3.0" fill="url(#capg)"/>
|
|
5
|
+
</svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<!-- Cordova — paths normalised to ±12-unit origin-centred canvas -->
|
|
3
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="-12 -12 24 24">
|
|
4
|
+
<defs><linearGradient id="cdv3450" x1="386.67" y1="402.39" x2="70.08" y2="198.42" gradientUnits="userSpaceOnUse" gradientTransform="translate(-14.85,-10.61)"><stop offset="0" stop-color="#acacac"/><stop offset="1" stop-color="#e9e9e9"/></linearGradient><linearGradient id="cdv4818" x1="367.78" y1="117.80" x2="107" y2="143.96" gradientUnits="userSpaceOnUse" gradientTransform="translate(-14.85,-10.61)"><stop offset="0" stop-color="#e5e5e5"/><stop offset="1" stop-color="#ffffff"/></linearGradient><linearGradient id="cdv4786" x1="342.03" y1="321.85" x2="326.45" y2="136.71" gradientUnits="userSpaceOnUse" gradientTransform="translate(-14.85,-10.61)"><stop offset="0" stop-color="#24303a"/><stop offset="1" stop-color="#394958"/></linearGradient><linearGradient id="cdv4796" x1="342.03" y1="321.85" x2="326.45" y2="136.71" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-1,0,0,1,477.74,-10.61)"><stop offset="0" stop-color="#24303a"/><stop offset="1" stop-color="#394958"/></linearGradient><radialGradient id="cdv4773" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.92308,-11.50769,-5.89644,-0.47304,-2165.70,4248.20)" cx="355.75" cy="-334.76" r="16.25"><stop offset="0" stop-color="#25303b" stop-opacity="1"/><stop offset="1" stop-color="#25303b" stop-opacity="0"/></radialGradient><linearGradient id="cdv4842" x1="182.23" y1="190.19" x2="182.23" y2="317.94" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#ffffff" stop-opacity="1"/><stop offset="0.5" stop-color="#ffffff" stop-opacity="0.53"/><stop offset="1" stop-color="#ffffff" stop-opacity="0"/></linearGradient><linearGradient id="cdv4854" x1="193.99" y1="190.19" x2="193.99" y2="126.35" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#ffffff" stop-opacity="1"/><stop offset="1" stop-color="#ffffff" stop-opacity="0"/></linearGradient><filter id="cdvf4539" style="color-interpolation-filters:sRGB" x="-0.201" width="1.402" y="-0.054" height="1.107"><feGaussianBlur stdDeviation="1.11"/></filter><filter id="cdvf4710" style="color-interpolation-filters:sRGB" x="-0.415" width="1.830" y="-0.111" height="1.222"><feGaussianBlur stdDeviation="2.29"/></filter></defs><g transform="scale(0.06814) translate(-231.1,-229.7)"><path fill="#7f8082" fill-rule="evenodd" d="m 341.15271,349.75084 -23.10547,48.26758 -15.9099,-60.10408 z"/><path fill="#7f8082" fill-rule="evenodd" d="m 128.40662,349.75084 15.73047,48.26758 15.9099,-60.10408 z"/><path fill="url(#cdv3450)" fill-rule="evenodd" stroke="#d6d6d6" stroke-width="1" stroke-linejoin="round" d="m 54.984742,190.19418 -0.01172,0.0176 32.791014,207.80664 56.373052,0 -4.60547,-48.26758 28.92383,0 3.68359,48.26758 118.08984,0 3.6836,-48.26758 28.74023,0 -4.60547,48.26758 56.74024,0 32.42383,-207.80664 -0.0117,-0.0176 -352.214848,0 z"/><path fill="url(#cdv4773)" fill-rule="evenodd" d="m 135.55849,317.93931 16.95592,-63.52818 -1.19223,-128.31045 -31.799,64.0935 z"/><path fill="#293441" fill-rule="evenodd" d="m 257.328,113.53179 70.27003,0 -1.44288,155.31435 -74.24552,0 z"/><path fill="#293441" fill-rule="evenodd" d="m 206.49966,113.62857 -68.4447,0.0422 1.62166,154.62151 69.68419,0 z"/><path fill="#2d3948" fill-rule="evenodd" d="m 145.13904,254.41098 -9.58008,63.5293 191.625,0 -11.39062,-63.07618 z"/><path fill="url(#cdv4786)" fill-rule="evenodd" d="m 327.18449,317.9405 -16.64092,-63.07721 0.6253,-129.16888 32.19531,64.49609 z"/><path fill="url(#cdv4796)" fill-rule="evenodd" d="m 135.7047,317.9405 16.80971,-63.52937 -1.19223,-128.31045 -31.79717,64.08982 z"/><path fill="#2d3b48" fill-rule="evenodd" d="m 199.31573,149.42759 6.32722,134.88013 49.28521,0 7.93879,-134.88013 z"/><path fill="url(#cdv4818)" fill-rule="evenodd" stroke="#d6d6d6" stroke-width="1" stroke-linejoin="round" d="m 407.19961,190.19418 -80.54885,-128.843752 -191.5,0 -80.166,128.843752 64.54072,0 31.62528,-63.84375 52,0 -3.83503,23.07716 63.55122,0 -3.35876,-23.77646 51.79557,0 32.05995,64.54305 z"/><path fill="#363f49" fill-rule="evenodd" opacity="0.449" d="m 259.50819,125.65113 52.2352,0.0433 31.62032,64.49975 -16.17975,127.7461 -121.54101,2e-5 62.82234,-127.74612 z"/><path fill="url(#cdv4842)" fill-rule="evenodd" opacity="0.3" d="M 268.46529,190.19418 205.64295,317.9403 135.55849,317.93931 119.52318,190.19418 Z"/><path fill="url(#cdv4854)" fill-rule="evenodd" opacity="0.2" d="m 151.15076,126.35043 52,0 -3.83503,23.07716 63.55122,0 5.59834,40.76659 -148.94211,0 z"/><g transform="translate(-14.849242,-10.606602)"><g transform="matrix(0.89997913,0,0,0.97774567,-1.4952307,573.7235)"><ellipse transform="matrix(1.4992885,0,0,1.3077391,-75.688852,99.470993)" cx="272.59341" cy="-325.39865" rx="6.6297965" ry="24.805298" fill="#05f0ff" opacity="0.8" filter="url(#cdvf4710)"/><ellipse transform="matrix(1.1653261,0,0,1.1578328,-3.9564384,51.930291)" cx="289.15836" cy="-326.0542" rx="6.6297965" ry="24.805298" fill="#ffffff" opacity="0.9" stroke="#06effe" stroke-width="0.918" filter="url(#cdvf4539)"/><ellipse transform="matrix(1.1653261,0,0,1.0707089,-3.9564384,23.603105)" cx="289.15836" cy="-326.0542" rx="6.6297965" ry="24.805298" fill="#feffff" opacity="0.9" stroke="#06effe" stroke-width="0.954" filter="url(#cdvf4539)"/></g><g transform="matrix(0.89997913,0,0,0.97774567,-102.68784,578.19963)"><ellipse transform="matrix(1.4992885,0,0,1.3077391,-75.688852,99.470993)" cx="272.59341" cy="-325.39865" rx="6.6297965" ry="24.805298" fill="#05f0ff" opacity="0.8" filter="url(#cdvf4710)"/><ellipse transform="matrix(1.1653261,0,0,1.1578328,-3.9564384,51.930291)" cx="289.15836" cy="-326.0542" rx="6.6297965" ry="24.805298" fill="#ffffff" opacity="0.9" stroke="#06effe" stroke-width="0.918" filter="url(#cdvf4539)"/><ellipse transform="matrix(1.1653261,0,0,1.0707089,-3.9564384,23.603105)" cx="289.15836" cy="-326.0542" rx="6.6297965" ry="24.805298" fill="#feffff" opacity="0.9" stroke="#06effe" stroke-width="0.954" filter="url(#cdvf4539)"/></g></g><path fill="none" stroke="#d6d6d6" stroke-width="1" stroke-linejoin="round" d="m 151.15076,126.35043 52,0 -3.83503,23.07716 63.55122,0 -3.35876,-23.77646 52.2352,0.0433 31.62032,64.49975 -16.17922,127.74632 -191.626,-0.001 -16.03531,-127.74513 z"/><path fill="none" stroke="#ffffff" stroke-width="1" opacity="0.343" d="m 342.83631,190.19418 -223.46934,0"/></g>
|
|
5
|
+
</svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<!-- Expo — paths normalised to ±12-unit origin-centred canvas -->
|
|
3
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="-12 -12 24 24">
|
|
4
|
+
<g transform="scale(0.9231) translate(-12.0,-13.0)"><path d="M22.069 10.075a2.273 2.273 0 00-.887-.74 2.296 2.296 0 00-2.237.16 2.265 2.265 0 00-.77.859 2.016 2.016 0 00.392 2.274 3.342 3.342 0 002.23-.63 3.289 3.289 0 001.271-1.923zM15.3 1.3l-1.45-.788-6.31 3.481.503.27.957.498 1.732-.954 4.569-2.523-.001.016zm.584-.24a.225.225 0 01.16.15l2.114 6.182a.205.205 0 01-.1.269 4.063 4.063 0 00-1.798 1.974 4.017 4.017 0 00-.175 2.655 4.283 4.283 0 001.755 2.332c.842.55 1.852.79 2.854.68a.269.269 0 01.262.16l2.184 6.345a.256.256 0 01-.101.278l-6.712 3.89a.253.253 0 01-.101.02.27.27 0 01-.181-.03L13.69 24.5a.234.234 0 01-.1-.1l-4.6-10.483-7.005 3.95a.327.327 0 01-.272.01l-1.592-.898a.23.23 0 01-.1-.299l6.805-12.8a.243.243 0 01.11-.099L13.721.03a.259.259 0 01.241 0l1.923 1.03zM7.47 4.499L7.14 4.33.58 16.71l1.197.668 5.657-7.335a.275.275 0 01.231-.1.282.282 0 01.201.149l6.16 14.066 1.646 1.007L9.06 6.005l-.281-.798-1.318-.718.01.01zm10.145 7.382a2.51 2.51 0 01.12-1.663 2.54 2.54 0 011.138-1.23 2.798 2.798 0 013.261.4 2.513 2.513 0 01.073 3.568l-.073.073a2.77 2.77 0 01-3.788.01 2.719 2.719 0 01-.731-1.158z" fill="#FFFFFF"/></g>
|
|
5
|
+
</svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<!-- Flutter — paths normalised to ±12-unit origin-centred canvas -->
|
|
3
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="-12 -12 24 24">
|
|
4
|
+
<defs><linearGradient id="flsg" x1="0.6" y1="9.9" x2="3.4" y2="7.2" gradientUnits="userSpaceOnUse"><stop offset="0%" stop-color="#1a237e" stop-opacity="0.4"/><stop offset="100%" stop-color="#1a237e" stop-opacity="0"/></linearGradient></defs><path d="M2.3,-12 L9.7,-12 L-6.0,3.7 L-9.7,0 Z" fill="#39cefd"/><path d="M-4.2,5.5 L-0.5,9.2 L9.7,-0.9 L2.3,-0.9 Z" fill="#39cefd"/><path d="M-4.2,5.5 L-0.5,1.8 L3.2,5.5 L-0.5,9.2 Z" fill="#16b9fd"/><path d="M-0.5,9.2 L2.3,12.0 L9.7,12.0 L3.2,5.5 Z" fill="#03569b"/><path d="M5.0,7.3 L3.2,5.5 L-0.5,9.2 Z" fill="url(#flsg)"/>
|
|
5
|
+
</svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<!-- iOS — paths normalised to ±12-unit origin-centred canvas -->
|
|
3
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="-12 -12 24 24">
|
|
4
|
+
<defs><linearGradient id="iosc" x1="50%" x2="50%" y1="50%" y2="100%"><stop stop-color="#0339F1" offset="0"/><stop stop-color="#01ADE5" offset="1"/></linearGradient><linearGradient id="iosb" x1="14.011%" x2="73.603%" y1="9.5347%" y2="75.34%"><stop stop-color="#0756EE" offset="0"/><stop stop-color="#00A3F5" offset=".37448"/><stop stop-color="#18B5B6" offset=".71708"/><stop stop-color="#80DF43" offset="1"/></linearGradient><linearGradient id="iosa" x1="13.017%" x2="86.649%" y1="3.0728%" y2="90.776%"><stop stop-color="#20BBA6" offset="0"/><stop stop-color="#9BEC23" offset=".4988"/><stop stop-color="#D9EF35" offset="1"/></linearGradient></defs><g transform="scale(0.16000) translate(-99.0,-97.0)" fill-rule="evenodd"><path d="m32.882 137.54h-4.5633v-60.979h4.5633v60.979zm-2.3466-75.927c-1.9244 0-3.5158-1.5265-3.5158-3.4509 0-1.9812 1.5833-3.5158 3.5158-3.5158 1.9812 0 3.5564 1.5265 3.5564 3.5158 0 1.9244-1.5752 3.4509-3.5564 3.4509z" fill="url(#iosc)"/><path d="m77.205 138.73c-22.313 0-36.409-16.248-36.409-42.076 0-25.699 14.161-42.011 36.409-42.011s36.401 16.313 36.401 42.011 c0 25.829-14.096 42.076-36.401 42.076zm0-79.89c-19.422 0-31.821 14.664-31.821 37.813 0 23.166 12.456 37.887 31.821 37.887 19.422 0 31.821-14.721 31.821-37.887 0-23.157-12.399-37.813-31.821-37.813z" fill="url(#iosb)"/><path d="m146.1 138.73c-16.751 0-28.76-9.4595-29.442-22.987h4.474 c0.68206 11.092 11.1 18.854 25.309 18.854 13.868 0 23.547-7.8761 23.547-18.513 0-8.5582-5.7731-13.479-19.471-16.93l-9.6787-2.3791 c-15.111-3.8569-21.972-9.971-21.972-20.21 0-12.74 11.895-21.915 26.787-21.915 15.395 0 26.892 9.0616 27.404 21.063h-4.474 c-0.62522-9.7924-10.19-16.93-23.044-16.93 -12.293 0-22.086 7.3646-22.086 17.668 0 8.1603 6.0005 12.854 19.13 16.134l9.1184 2.3222 c15.793 3.9056 22.873 9.971 22.873 20.835 0 13.527-11.376 22.987-28.476 22.987z" fill="url(#iosa)"/></g>
|
|
5
|
+
</svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<!-- Kotlin — paths normalised to ±12-unit origin-centred canvas -->
|
|
3
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="-12 -12 24 24">
|
|
4
|
+
<defs><linearGradient id="kg1" x1="-5.6" y1="17.6" x2="5.7" y2="6.3" gradientUnits="userSpaceOnUse"><stop offset="9.7%" stop-color="#0095D5"/><stop offset="30.1%" stop-color="#238AD9"/><stop offset="62.1%" stop-color="#557BDE"/><stop offset="86.4%" stop-color="#7472E2"/><stop offset="100%" stop-color="#806EE3"/></linearGradient><linearGradient id="kg2" x1="-10.3" y1="-7.2" x2="-3.7" y2="-13.8" gradientUnits="userSpaceOnUse"><stop offset="11.8%" stop-color="#0095D5"/><stop offset="41.8%" stop-color="#3C83DC"/><stop offset="69.6%" stop-color="#6D74E1"/><stop offset="83.3%" stop-color="#806EE3"/></linearGradient><linearGradient id="kg3" x1="-16" y1="10.1" x2="6.3" y2="-12.3" gradientUnits="userSpaceOnUse"><stop offset="10.8%" stop-color="#C757BC"/><stop offset="21.4%" stop-color="#D0609A"/><stop offset="42.5%" stop-color="#E1725C"/><stop offset="60.5%" stop-color="#EE7E2F"/><stop offset="74.3%" stop-color="#F58613"/><stop offset="82.3%" stop-color="#F88909"/></linearGradient></defs><polygon points="-12,12 0,0 12,12" fill="url(#kg1)"/><polygon points="-12,-12 0,-12 -12,1" fill="url(#kg2)"/><polygon points="0,-12 -12,0.7 -12,12 0,0 12,-12" fill="url(#kg3)"/>
|
|
5
|
+
</svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<!-- React Native — paths normalised to ±12-unit origin-centred canvas -->
|
|
3
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="-12 -12 24 24">
|
|
4
|
+
<ellipse rx="11" ry="4.2" fill="none" stroke="#61DAFB" stroke-width="1.1"/><ellipse rx="11" ry="4.2" fill="none" stroke="#61DAFB" stroke-width="1.1" transform="rotate(60)"/><ellipse rx="11" ry="4.2" fill="none" stroke="#61DAFB" stroke-width="1.1" transform="rotate(120)"/><circle r="2.05" fill="#61DAFB"/>
|
|
5
|
+
</svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<!-- Swift — paths normalised to ±12-unit origin-centred canvas -->
|
|
3
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="-12 -12 24 24">
|
|
4
|
+
<g transform="scale(0.40410) translate(-29.6955,-29.6956)"><path fill="#F05138" d="M59.3867,16.4501c-0.0035-0.5973-0.0101-1.1943-0.0266-1.7923c-0.0348-1.3008-0.1117-2.6134-0.3429-3.9003c-0.2346-1.3069-0.6181-2.5221-1.2225-3.7093c-0.5933-1.1659-1.3689-2.2328-2.2941-3.158c-0.925-0.9252-1.9919-1.7007-3.1583-2.2943c-1.1862-0.6037-2.4016-0.9871-3.7073-1.2217c-1.2876-0.2319-2.6002-0.3083-3.902-0.3435c-0.5977-0.0162-1.1948-0.023-1.7923-0.0267C42.2315,0,41.5218,0,40.8128,0H25.0912h-6.5131c-0.7097,0-1.4186,0-2.1276,0.0041c-0.5977,0.0037-1.1955,0.0105-1.7923,0.0267c-0.3254,0.0088-0.6515,0.0202-0.9778,0.0359c-0.9788,0.0472-1.9591,0.1337-2.9243,0.3076c-0.9793,0.176-1.9079,0.4356-2.8113,0.8091C7.6437,1.3078,7.3453,1.445,7.0487,1.5959C6.1739,2.0411,5.3549,2.5886,4.61,3.2248c-0.2483,0.2121-0.4884,0.434-0.7196,0.6653c-0.9254,0.9252-1.701,1.9921-2.2943,3.158c-0.6044,1.1872-0.9874,2.4024-1.2222,3.7093c-0.231,1.2869-0.3078,2.5995-0.3428,3.9003c-0.0164,0.598-0.0233,1.195-0.0272,1.7923C-0.0006,17.1594,0,17.8689,0,18.5781V28.26v12.5525c0,0.7099-0.0007,1.4187,0.0039,2.1286c0.0039,0.5973,0.0108,1.1943,0.0272,1.7913c0.035,1.3015,0.1117,2.6144,0.3428,3.9007c0.2348,1.3065,0.6178,2.5228,1.2222,3.7097c0.5933,1.1662,1.3689,2.2328,2.2943,3.1576c0.9247,0.9256,1.9919,1.701,3.1584,2.295c1.1863,0.6038,2.4016,0.9867,3.7076,1.2213c1.2868,0.2316,2.6004,0.3086,3.9019,0.3434c0.5968,0.0159,1.1946,0.023,1.7923,0.0264c0.709,0.0051,1.4179,0.0044,2.1276,0.0044h22.2346c0.709,0,1.4187,0.0007,2.1278-0.0044c0.5975-0.0034,1.1946-0.0105,1.7923-0.0264c1.3018-0.0348,2.6144-0.1119,3.902-0.3434c1.3057-0.2346,2.5211-0.6176,3.7073-1.2213c1.1664-0.5939,2.2333-1.3694,3.1583-2.295c0.9252-0.9249,1.7009-1.9914,2.2941-3.1576c0.6044-1.1869,0.9879-2.4031,1.2225-3.7097c0.2312-1.2863,0.3081-2.5992,0.3429-3.9007c0.0164-0.597,0.023-1.1939,0.0266-1.7913c0.0046-0.7099,0.0042-1.4187,0.0042-2.1286V18.5781C59.3909,17.8689,59.3912,17.1594,59.3867,16.4501z"/><path fill="#FFFFFF" d="M47.0606,36.6607c-0.0014-0.0018-0.0027-0.0031-0.0042-0.0048c0.0657-0.2236,0.1335-0.4458,0.191-0.675c2.465-9.8209-3.5511-21.4319-13.7316-27.5454c4.4613,6.0479,6.4339,13.3733,4.6813,19.7795c-0.1563,0.5714-0.3442,1.1198-0.5519,1.6528c-0.2254-0.1481-0.5094-0.3162-0.8908-0.5265c0,0-10.1269-6.2527-21.1028-17.3122c-0.288-0.2903,5.8528,8.777,12.8219,16.1399c-3.2834-1.8427-12.4338-8.5004-18.2266-13.8023c0.7117,1.1869,1.5582,2.3298,2.4887,3.4301c4.8375,6.1349,11.1462,13.7044,18.7043,19.5169c-5.3104,3.2498-12.8141,3.5025-20.2852,0.0034c-1.8479-0.866-3.5851-1.9109-5.1932-3.0981c3.1625,5.0585,8.0332,9.4229,13.9613,11.9708c7.0695,3.0381,14.0996,2.8321,19.3356,0.0498l-0.0041,0.006c0.0239-0.0151,0.0543-0.0316,0.0791-0.0469c0.215-0.1156,0.4284-0.2333,0.6371-0.3576c2.5157-1.3058,7.4847-2.6306,10.1518,2.5588C50.7755,49.6699,52.1635,42.9395,47.0606,36.6607z"/></g>
|
|
5
|
+
</svg>
|
|
@@ -27,11 +27,13 @@ const findModuleRecursively = (dir) => {
|
|
|
27
27
|
}
|
|
28
28
|
return findModuleRecursively(parent);
|
|
29
29
|
};
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}
|
|
30
|
+
const resolveModuleName = (projectRoot) => {
|
|
31
|
+
const moduleName = findModuleRecursively(path_1.default.resolve(projectRoot));
|
|
32
|
+
if (!moduleName) {
|
|
33
|
+
throw new Error(`Could not find neither '${PUBLIC_MODULE}' or '${PRIVATE_MODULE}' in node_modules from project root: ${projectRoot}`);
|
|
34
|
+
}
|
|
35
|
+
return moduleName;
|
|
36
|
+
};
|
|
35
37
|
const { addMetaDataItemToMainApplication, removeMetaDataItemFromMainApplication, getMainApplicationOrThrow } = config_plugins_1.AndroidConfig.Manifest;
|
|
36
38
|
const androidPlugin = (config, props = {}) => {
|
|
37
39
|
config = (0, config_plugins_1.withAppBuildGradle)(config, ({ modResults, ...subConfig }) => {
|
|
@@ -39,7 +41,9 @@ const androidPlugin = (config, props = {}) => {
|
|
|
39
41
|
config_plugins_1.WarningAggregator.addWarningAndroid('withBackgroundGeolocation', `Cannot automatically configure project build.gradle if it's not groovy`);
|
|
40
42
|
return { modResults, ...subConfig };
|
|
41
43
|
}
|
|
42
|
-
|
|
44
|
+
const projectRoot = config?._internal?.projectRoot ?? process.cwd();
|
|
45
|
+
const moduleName = resolveModuleName(projectRoot);
|
|
46
|
+
modResults.contents = applyAppGradle(modResults.contents, moduleName);
|
|
43
47
|
return { modResults, ...subConfig };
|
|
44
48
|
});
|
|
45
49
|
config = (0, config_plugins_1.withAndroidManifest)(config, async (config) => {
|
|
@@ -64,13 +68,13 @@ const androidPlugin = (config, props = {}) => {
|
|
|
64
68
|
});
|
|
65
69
|
return config;
|
|
66
70
|
};
|
|
67
|
-
const applyAppGradle = (buildGradle) => {
|
|
71
|
+
const applyAppGradle = (buildGradle, moduleName) => {
|
|
68
72
|
// Apply background-geolocation.gradle
|
|
69
73
|
const newSrc = [];
|
|
70
|
-
newSrc.push(`Project background_geolocation = project(':${
|
|
74
|
+
newSrc.push(`Project background_geolocation = project(':${moduleName}')`);
|
|
71
75
|
newSrc.push(`apply from: "\${background_geolocation.projectDir}/app.gradle"`);
|
|
72
76
|
buildGradle = (0, generateCode_1.mergeContents)({
|
|
73
|
-
tag: `${
|
|
77
|
+
tag: `${moduleName}-project`,
|
|
74
78
|
src: buildGradle,
|
|
75
79
|
newSrc: newSrc.join("\n"),
|
|
76
80
|
anchor: /android\s\{/,
|
|
@@ -107,11 +111,11 @@ const applyExtVars = (buildGradle: string, props:Props) => {
|
|
|
107
111
|
}).contents;
|
|
108
112
|
}
|
|
109
113
|
*/
|
|
110
|
-
const applyMavenUrl = (buildGradle) => {
|
|
114
|
+
const applyMavenUrl = (buildGradle, moduleName) => {
|
|
111
115
|
return (0, generateCode_1.mergeContents)({
|
|
112
|
-
tag: `${
|
|
116
|
+
tag: `${moduleName}-maven`,
|
|
113
117
|
src: buildGradle,
|
|
114
|
-
newSrc: `\tmaven { url "\${project(":${
|
|
118
|
+
newSrc: `\tmaven { url "\${project(":${moduleName}").projectDir}/libs" }\n\tmaven { url 'https://developer.huawei.com/repo/' }`,
|
|
115
119
|
anchor: /maven\s\{/,
|
|
116
120
|
offset: 1,
|
|
117
121
|
comment: "//",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"androidPlugin.js","sourceRoot":"","sources":["../src/androidPlugin.ts"],"names":[],"mappings":";;;;;AAAA,yDAQ8B;AAE9B,gFAGuD;AASvD,gDAAwB;AACxB,4CAAoB;AAEpB,MAAM,aAAa,GAAG,qCAAqC,CAAC;AAC5D,MAAM,cAAc,GAAG,aAAa,GAAG,UAAU,CAAC;AAElD,MAAM,gBAAgB,GAAG,4CAA4C,CAAC;AACtE,MAAM,oBAAoB,GAAG,gDAAgD,CAAC;AAC9E,MAAM,wBAAwB,GAAG,oDAAoD,CAAC;AAEtF,MAAM,qBAAqB,GAAG,CAAC,GAAW,EAAiB,EAAE;IAC3D,MAAM,WAAW,GAAG,cAAI,CAAC,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IACtD,IAAI,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC;QACzD,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,IAAI,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;QAC1D,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,MAAM,MAAM,GAAG,cAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACvC,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;QACnB,2DAA2D;QAC3D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAC;AACvC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"androidPlugin.js","sourceRoot":"","sources":["../src/androidPlugin.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
|
|
3
3
|
"name": "react-native-background-geolocation",
|
|
4
|
-
"version": "5.0
|
|
4
|
+
"version": "5.1.0",
|
|
5
5
|
"description": "The most sophisticated cross-platform background location-tracking & geofencing module with battery-conscious motion-detection intelligence",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"build": "yarn run build:expo",
|
|
@@ -57,7 +57,6 @@
|
|
|
57
57
|
"fs-extra": "^9.1.0",
|
|
58
58
|
"path": "^0.12.7",
|
|
59
59
|
"rimraf": "^5.0.0",
|
|
60
|
-
"typedoc": "^0.28.14",
|
|
61
60
|
"typescript": "^5.6.0"
|
|
62
61
|
}
|
|
63
62
|
}
|
package/.vscode/settings.json
DELETED