Mahara Mobile

使用Cordova(PhoneGap)的多平台Mahara移动应用程序。(Multi-platform Mahara mobile app, using Cordova (PhoneGap))

  • Owner: MaharaProject/mahara-mobile-cordova
  • Platform: Android, iOS
  • License:: GNU General Public License v3.0
  • Category::
  • Topic:
  • Like:
    0
      Compare:

Github stars Tracking Chart

Mahara Mobile是Android和iOS的新Mahara应用程序,允许您离线收集和创建学习证据,然后在您连接互联网时将其上传到Mahara。

Mahara Mobile

构建Mahara Mobile 的技术堆栈是:JavaScript ES6, React, Redux, and Phonegap。

Overview

Name With OwnerMaharaProject/mahara-mobile-cordova
Primary LanguageJavaScript
Program languageJavaScript (Language Count: 3)
PlatformAndroid, iOS
License:GNU General Public License v3.0
Release Count0
Created At2016-09-05 07:22:47
Pushed At2021-03-01 23:20:06
Last Commit At2021-03-02 12:20:06
Stargazers Count7
Watchers Count6
Fork Count7
Commits Count212
Has Issues Enabled
Issues Count21
Issue Open Count15
Pull Requests Count39
Pull Requests Open Count1
Pull Requests Close Count5
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private

Mahara Mobile

A Mahara app for offline use.

The technology is JavaScript ES6, React, Redux, and Phonegap.

Requirements

  • Mahara 16.10+
    • The Mahara site you're connecting to must have activated the new "mobileapi" module added in Mahara 16.10: https://reviews.mahara.org/#/c/7039/
    • Once that's added, you'll need to activate the plugin by going to "Administration -> Extensions -> Plugin configuration -> module/mobileapi" and using the auto-configure tool.
  • Node.js (version 4 or later)

Dev Install

To install all the NPM and Cordova dependencies:

npm install

Running in a browser

For basic debugging and development, the site can be run in a Chromium browser on your local machine. (Note: Some Cordova plugins don't work in the browser, so some functionality may be missing.) To launch the browser, just run:

npm start

To rebuild the app in the browser, after you've made changes:

npm run build-browser

... and then refresh the browser.

Running in an Android emulator or USB-connected device

To build the Android app, you'll need the Oracle version of Java 8. Here's how to install it on Ubuntu:

sudo add-apt-repository -y ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer oracle-java8-set-default

Then download and install Android studio from https://developer.android.com/studio/index.html

Launch Android Studio and run through the first-time wizard. Then from the tools menu, launch the SDK Manager. Install:

Android SDK Tools
Android SDK Platform-tools
Android 6.0 -> SDK Platform
Android 6.0 -> Intel x86 Atom_64 System Image

Once those are installed, close the SDK Manager and launch the AVD Manager. Create an Android 6 (API 23) virtual device, and launch it. (Or alternately, you could connect up a physical Android device via USB, and put it in development mode.)

Then finally, run:

npm run android

To update the app in Android after you've made changes to the code, run npm run android again.

Compiling the Android executable

You can use the cordova command-line tool. To produce an APK that can run on a normal Android device, you'll need an Java keystore to sign it with. See the Android documentation for instructions on how to generate an acceptable keystore.

`npm bin`/cordova build \
    --release \
    --device android \
    -- \
    --keystore=/PATH/TO/YOUR/KEYSTORE.keystore \
    --alias=YOURKEYALEAS

Running on IOS

npm run build-ios

TODO:

  • The app currently does everything in redux using the basic synchronous data flow
  • Data is stored in LocalStorage, which is not guaranteed to be persistent in iOS! https://cordova.apache.org/docs/en/latest/cordova/storage/storage.html#disadvantages
    • The best solution seems to be to move the data storage into a SQLite database file, placed in a location where iOS won't delete it.
  • Camera support (instead of just gallery support)
  • Tags on images
  • More informative error messages
  • Better control flow for situations where the user's token is no longer valid.
  • Testing on iOS
To the top