Considering that, we are building the mobile app from moodle app codebase. we will be setting up
- airnotifer installation and setup
- Andoird / Ios Mobile App settings from stores
- Setup Moodle Configuration in order to use
- Important Points and How to Debug
app release version github tag : https://github.com/moodlehq/moodleapp/releases/tag/v3.9.4
airtnotifier version : 3 https://github.com/airnotifier/airnotifier/
server environment : ubuntu
moodle version : 3.8
Airnotfier Setup :-
it requires python, so check the python version.
>>> python --version # make a directory to check the airnotifier from git, so lets say you are at home directory >>> cd ~ ## check out source code >>> git clone -b master git://github.com/airnotifier/airnotifier.git # install python3 build tools >>> apt-get install python3-pip build-essential git # into checked out code directory >>> cd airnotifier # setup python3 env >>> pip3 install pipenv --user # in my case, python3 was available with command python3 >>> python3 -m pipenv install --deploy >>> cp config.py-sample config.py # there is nothing to change as sample has everything. # it will require mongo db in order to run, if you do not have >>> echo "deb http://repo.mongodb.org/apt/debian buster/mongodb-org/4.4 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list >>> sudo apt-get update >>> sudo apt-get install -y mongodb-org >>> sudo apt-get install -y mongodb-org >>> sudo systemctl start mongod >>> sudo systemctl status mongod # install airnotifier >>> python3 -m pipenv run ./install.py >>> python3 -m pipenv run ./app.py
Imp-1 : make sure the port mentioned in conifg.py /8801 is accessible from outside world , if not check ufw or firewall setting to allow port
Imp-2 : In order to run this without interrruptinng, you can utilize screen so that it run’s on virtual terminal that does not end after your session.
you can try accessing : In your browser: http://your_server_ip_address:8801 – Login as
Create an app with the package name :-
Now , you need to do few more setup in regards of usage and that will depend upon the app type
Mobile App Configuration
1- Android App Configuration :-
- In order to use this on Android Platform, you need to create a project in firebase. https://console.firebase.google.com
- Create a project and go to project settings
- create an android app there and download google-service.json
- Put that google-service.json in ionic moodle app codebase at root location [there are other files like config.xml, package.json etc]
- Copy the project Id from Firebase Console project settings
- put it under airnotifer “Firebase Cloud Messaging settings” section, project id and content of google-service.json
Now it is to setup the Moodle Codebase so that Notification can be pushed to Airnotifier.
1- IOs App Configuration :-
- IN order to connect the ios, you need to put few information in airnotifier that can be gathered from https://appstoreconnect.apple.com/
- Team ID : can be gathered from membrship page : https://developer.apple.com/account/
- App bundle ID : package name : <com.test.moodlenotificaiton>
- Key ID : <you can create and it will be available >
- Key File [p8 content]:
Imp- IOs notification can not be tested on Emulator.
Setup Moodle and Airnotifier :-
- under <moodleurl>/admin/message.php or Site administration > Messaging > Notification settings , enable Mobile Notification.
- Click on Settings , and put the requried detail
- Airtnotifier url, port number, package, airtnoifier app name [can be copied for airnotifier], Access key [ you can create that from air notifier app section]
So the setup part is done.
Important Points And How to Debug
Important Points :-
1- as this has custom package name, so please make sure you have changed this under Site administration > Mobile app > Mobile appearance Android app’s unique identifier section in moodle codebase
2- Android Notification can be tested on virtual device as well.
3: If your app crashes on receving notification while app is open
- go to file message/output/airnotifier/message_output_airnotifier.php
- edit file and go to line number 125, put the following code
$curl->setopt(array('CURLOPT_TIMEOUT' => 2, 'CURLOPT_CONNECTTIMEOUT' => 2)); $curl->setHeader($header); // put the follwing line after above lines unset($extra->notification);
How to Debug :-
- As soon as you launch app , Server will register this. check the token from mdl_user_devices table
- jsut try to send a message from admin to your app user from moodle interface and check in airtnotifer > <your app> > logs section.
if you get this , it means your moodle is communicating with Airnotifier Server. If not , it means there is problem as moodle is not able to push the message to airnotifer. jsut recheck moodle airnotifer setting again.