Considering that, we are building the mobile app from moodle mobile app codebase. In order to use the push notification feature using airnotifer, following steps are required.
Airnotifier Installation And Setups
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
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 interrupting, 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
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.
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
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.