👁 itoo Push Notification Examples for ALL!

EXAMPLE 5

PHP and http server using a timer

Prerequisites:

  • you will need an online http server, running php
  • create two php files, one to create a message, one to get the message

setMsg.php

<?php

$message = $_REQUEST['message'];

$file = '/tmp/itoofile';
$content = json_encode($message);
file_put_contents($file, $content);
$content = json_decode(file_get_contents($file), TRUE);
echo $content

?>

getMsg.php

<?php

$file = '/tmp/itoofile';
$content = json_decode(file_get_contents($file), TRUE);
echo $content

?>

The setMsg php places your message in a file on the server. The getMsg php retrieves the message from the file.

Setup:

  • enter your http server url in the two positions indicated in the block
  • using the admin blocks, setup a message on your server

Blocks

AIA

PHPMessage_iToo_blank.aia (115.6 KB)

EXAMPLE 6

PHP & MYSQL using a timer

Prerequisites:

  • An online http server set up with php and a mysql database
  • create a simple table in a new or existing database
    image
  • create two php files, one for setting the other for getting the message

setitoomessage.php

<?php
    
     require '../creds.php';

     $message = $_REQUEST["message"];

     $conn = mysqli_connect($servername, $username, $password, $dbname);

     if (!$conn) {
     die("Connection failed: " . mysqli_connect_error());
     }

     $sql = "UPDATE itooMessage SET message='$message' WHERE id=1";

     if (mysqli_query($conn, $sql)) {
       echo "Record updated successfully";
     } else {
       echo "Error updating record: " . mysqli_error($conn);
     }

    mysqli_close($conn);
?>

getitoomessage.php

<?php
    
     require '../creds.php';

    // Create connection
    $conn = mysqli_connect($servername, $username, $password, $dbname);
    // Check connection
    if (!$conn) {
      die("Connection failed: " . mysqli_connect_error());
    }

    $sql = "SELECT * FROM itooMessage WHERE id=1";
    $result = mysqli_query($conn, $sql);

    if (mysqli_num_rows($result) > 0) {
    // output data of each row
    while($row = mysqli_fetch_assoc($result)) {
      echo $row["message"];
    }
    } else {
      echo "0 results";
    }

    mysqli_close($conn);
?>

you will note I have my db credentials stored in a separate file...

SETUP

  • enter the http server url in the two positions where it is required in the blocks
  • create a message using the admin blocks

Blocks

AIA

PHPMYSQLMessage_iToo_blank.aia (115.6 KB)

SUMMARY

Well, there you are, six different ways to get push notifications running in your app, at relatively no cost.

I am slightly uncomfortable about the timer approach, because this is always calling data back to be tested in the background process, there are polling routines for php, and triggers for mysql, but integrating these would be a headache, let us keep it simple. I also considered a version for going direct to my redis server using webdis (SEE HERE), but the setup is onerous, and again, let us keep it simple. If anyone has a better solution, I am all ears.

Which one is best ?

This will all depend on your circumstances, what you may have already available, and what you consider to be free (free as in beer...). The Google Sheet/Form approach seems best on this front, but if you have your own online server, then this may be better. It will all come down to what works for you.

I ran a test on Firebase, after leaving the app running for @ 12 hours, and checked the data usage. Calculating it out, it seems that your app could make @ 1 million calls before reaching the 360mb free limit per project, so one call per user per day = 1 million users. Should be enough?

Battery usage on device?

Lots of discussion about this. I am yet to see any significant change to my device battery levels as a result of running this service, either with dataChanged or with a timer.

Support

I have assumed that you have sufficient knowledge with regarding to Google/php/mysql/Firebase to get these examples working, most questions about these web technologies will probably be off-topic, any questions therefore should be about the specifics of using these examples.

Updates
The itoo and notificationStyle extensions have now been updated for Android 14 users / API 34.

If any other such issues arise, then please report here or in the respective topics.

1 Like

Thank you for the fantastic work. This has given me an idea to address the issues Android 14 users face when using iToo. We could use an Alarm Manager to periodically check for updates in the Google Sheet throughout the day and if at a certain alarm an update is available, the system would send a notification. This setup allows you to continue using Alarm Manager as usual, simply by adding a new Alarm Manager item.

1 Like

Thanks alot for your great efforts
The app crashes when i use timer only when i changed the target sdk to 34
Tested in android 14 Samsung A04s

Ensure you update your itoo and notification style extensions to the very latest version that work with API 34 and android 14. Remember, that you need to compile, this will not work with companion.

For now, use this update v4.3:

2 Likes

Example 1: App closes immediately. Device running on Android 11 and itoo version 4.3.1

Did you use the latest NotificationStyle extension as well ?

Yes
Screenshot 2024-09-16 at 4.04.24 PM
Screenshot 2024-09-16 at 4.04.16 PM

Did you use a correct url and api key?

To find out what is going on use logcat

Taifun

Yes, @Taifun. I have filled all the information. And also I will soon be debugging.

I don't get a crash, but I also do not get any response. Tested Android 12 and 14.

[EDIT - oops! forgot to build - will test again] :upside_down_face:

The original apks I created and tested are still working OK on Android 13 Pixel 4a, but if I attempt to create a new apk from the aia file, then this does not work (using either the previous extensions or the most recent), this tested on Android 12, 13 and 14.

I'll be running logcat to see what is occuring.

In the meantime test this aia project (build it first, of course), should just show that itoo and notficationStyle is working.

SimpleItooProject2 (1).aia (117.1 KB)

@husnain

All the other examples appear to work on Android 12 and 14 for me, it is just the one with the Firebase dataChanged event causing an issue. It is being investigated.

Have now figured out the problem.

Set your firebase project rules as follows:

{
  // Allow read/write access to all users under any conditions
  // Warning: **NEVER** use this ruleset in production; it allows
  // anyone to overwrite your entire database.

  "rules": {
    ".read": true,
    ".write": true
  }
}
2 Likes

In the end, it was a simple fix, (and I probably should have done this in the first place!) whilst allowing the itoo node to be read/write true and have other nodes with secure rules.

In the Execution Script, simply add itoo to the end of the firebase url.

Edits have been made to the Example 1 post.

1 Like

In these examples, will the permanent service notification be shown?

Yes, because these use the CreateProcess method

Taifun