Setting up Airnotifier Push notification in Customized Moodle Mobile App

Considering that, we are building the mobile app from moodle app codebase. we will be setting up

Environment Specs-

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 [email protected]/admin

Airtnoifier Screen

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 :-

https://developer.apple.com/account/resources/authkeys/list

  • 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 in order to user 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
    • unset($extra->notification);
$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.

blog-admin

An E-learning Solution Architect and LAMP Stack Developer.

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *