This app provides the map user interface for browsing data on Open Charge Map (https://map.openchargemap.io). It can also be embedded by other websites using an iframe.
The app is implemented using the Angular version of the Ionic Framework.
The build/runtime configuration settings are in /src/environments/environment.ts
and environment.prod.ts
.
The .prod.ts
version is used when you build with the --prod
flag.
At a minimum the apiBase
setting must be set to a working OCM API host and the mapBoxToken
must be set to a real mapbox API key.
Feature toggles are defined by the enabledFeatures
array, the app will check for the presence of a feature in this array before enabling related UI. This is where additional feature toggles would be defined and this allows dev and prod versions to have different features toggled on.
-
Install Ionic CLI
npm install -g @ionic/cli
-
Install npm modules:
npm install
(depending on Angular version may requirenpm install --legacy-peer-deps
ornpm install --force
) -
To run in desktop browser:
ionic serve
Run ionic build --prod
which will output html build to www folder. When updating live app, preserve web.config and favicon.
Copy www
output to gh-pages branch and commit to publish. When updating live app, preserve CNAME and favicon.
-
Android and iOS, using Capacitor
-
Build app:
ionic build --prod
-
Sync app content to platform:
npx cap sync
-
iOS and Android versions historically have different bundle ids.
- Android:
- Update bundle id to
com.webprofusion.openchargemap
(includingcapacitor.config.json
), version code in/app/build.gradle.
npx cap add android
.- Set required permissions per plugin in AndroidManifest.xml/ Gelocation.
- // resolve ERR_CLEARTEXT_NOT_PERMITTED debug error: add
android:usesCleartextTraffic="true"
to AndroidManifest.xml. - Icons: Android Studio > Tools > Resource Manager > + New Image Asset, browse to Icon as SVG, scale 113%; trim yes; set background layer colour to
#8BC43F
. - Splashscreen: open Tools > resource Manager and drag splashscreen image in to replace existing.
- Push notifications: copy google-services.json to app.
- Set version in Android Studio:
app:build.gradle default config
as per https://stackoverflow.com/a/26865465/1707154. - build:
ionic build --prod
,npx cap sync android
,npx cap open android
, Build > Generate Signed Bundle in Android Studio using private keystore. Publish to play console in releases dashboard. - Double check icons and splashscreens!
- Update bundle id to
- iOS:
npx cap add ios
- Update bundle id to
org.openchargemap.app
(includingcapacitor.config.json
), version code, set Display Name to 'Open Charge' (for length). - Set Info.plist settings and permissions as required by Capacitor plugins:
- Privacy Location Text (important for validation): 'Your location information will be used to find charging stations near you.' See https://capacitorjs.com/docs/apis/geolocation.
- [unused] Add Push Notifications capability.
- Set splashscreen and icons: replace
/ios/App/App/Assets
withresources/ios/Assets
. - Release build:
ionic build --prod
,npx cap sync ios
.- Update Version and Build ID in Xcode.
- Target Generic iOS device, Product > Archive. Then Organizer > Distribute App > App Store Connect.
- Android:
-
typedoc --options typedoc.json --exclude '**/*+(e2e|spec|index).ts' ./src/