Share My Creation [B4A] Firebase Notifications Alternative - Source Codes

Hello everyone :)

*Starting off by thanking the one, the only, the hero, @Erel for making this possible for every single one of us ♥

As requested by dear @ilan :

We have created a notifications service, which means you can now host your own notifications services without the need to use any third party (Firebase)

* Dear @ilan requested the library to be in B4A+B4i+B4J so we will release the B4i + B4J as separate projects in the near future which will be different from this project.

The project works as follows :
1- B4J Admin :
1.1 You can create campaigns :
-Text only
-Text & Images
1.2 You can also create topics: The topics are what each user is registered to.
1.3 Users Information
1.4 Reports : where you can view a certain campaign status and delivery within a period of time.

2- Heavily modified JRDC2 to send/receive events, campaigns, register users, reports, etc..
3- MS SQL Database to store all the above information
4- B4A Library that connects to the JRDC2 in the background to send/receive events.

Features :
1- User's action on the notification is registered, meaning you can view if the user clicked or ignored it or even received it or not and every action date & time is registered as well.
2- We have created 200,000 virtual devices (by creating a loop in the JRDC2) + 5 real phone, then we created a campaign and sent it, within less than 1 second every device (real and virtual) received it.
3- The JRDC2 + B4A Library checks in case the user has no internet or disconnected from the server, once the user connects to the server (in the background) the user will receive the last campaign that we sent to everyone which he/she was disconnected.

Technology :
1- B4A library (.jar + .xml)
2- B4A Library Source code
3- Heavily modified JRDC2
4- B4J Admin
5- MS SQL Database

*We have also included a simple sample project which shows how to use the library

The Project in Action :


Main.PNG



*Be noted that there are some devices that have custom android which may kill the background services if the user clicks on clear open & recent apps.

Project Price : 30$
To Purchase the source code click on the below Link:



As always, Thank you,
Saif
 
Last edited:

sfsameer

Well-Known Member
Licensed User
Longtime User
I know that I will receive criticism but I would like to make a general suggestion (also, I have never learned to be diplomatic and mind my own business 😄).

I realize that you (Saif) are used to using MS Sql (excellent DBMS, of course) but I think most of B4X members would prefer to use MySql (/ Maria DB).

You (we) could open a poll thread; indeed, soon I will.


P.S. Somewhat redundant texts but I opened it.
Hello my dear,

Within 48 hours we will release the MySql version :)

*Am not suppose to share any details, but we are in the process of creating an new database engine "b4x database engine" ;)
Will be released very soon :)


Thank you,
Saif
 

sfsameer

Well-Known Member
Licensed User
Longtime User
If I understand what it will be, it's a great idea
Faster, secure and 12 million records resulting in database size of 39kb only, meaning the data compression methods we used are more than amazing :)

The time of the select query of the 12 million records were 4 seconds (ms sql 30 minutes)

Also it can work on windows, MacOS, Linux, Android, ios or even a free php server like 000webhost (the ultimate cross platform) :)

I think I have shared way too much 🤣 😅
 

cklester

Well-Known Member
Licensed User
Faster, secure and 12 million records resulting in database size of 39kb only, meaning the data compression methods we used are more than amazing :)

The time of the select query of the 12 million records were 4 seconds (ms sql 30 minutes)

Also it can work on windows, MacOS, Linux, Android, ios or even a free php server like 000webhost (the ultimate cross platform) :)

I think I have shared way too much 🤣 😅

Sorry, Saif, but after I heard you guys were doing a new database engine, I decided to try my hand at it.

So far, I have 15 million records in 37kb, and query all records only takes 2.8 seconds.

My engine works on Windows, MacOS, Linux, Android, iOS, Windows Phone, and Commodore Amiga.

However, I will never share my code, so go ahead and share yours when you are ready.

😁 😂🤣
 

scsjc

Well-Known Member
Licensed User
Longtime User
Sorry, Saif, but after I heard you guys were doing a new database engine, I decided to try my hand at it.

So far, I have 15 million records in 37kb, and query all records only takes 2.8 seconds.

My engine works on Windows, MacOS, Linux, Android, iOS, Windows Phone, and Commodore Amiga.

However, I will never share my code, so go ahead and share yours when you are ready.

😁 😂🤣
Amiga2000 great computer 🚀🚀🚀🔥🔥🔥
 

cklester

Well-Known Member
Licensed User
Amiga2000 great computer 🚀🚀🚀🔥🔥🔥

Yes! I started with a VIC-20, went to Commodore 64, then Amiga 500, and, finally, Amiga 4000!

Ah, the good ol' days. Too bad the companies who owned those computers weren't able to capitalize on the superiority of their products!
 

amorosik

Expert
Licensed User
I know that I will receive criticism but I would like to make a general suggestion (also, I have never learned to be diplomatic and mind my own business 😄).
I realize that you (Saif) are used to using MS Sql (excellent DBMS, of course) but I think most of B4X members would prefer to use MySql (/ Maria DB).
You (we) could open a poll thread; indeed, soon I will.
P.S. Somewhat redundant texts but I opened it.

If you work in Microsoft Windows environment, surely MsSql has some points more than MySql
But apart from the technical issues, the most important thing in my opinion, is the fact that the MySql license is not clear whether it can allow free use or not, because if you go to read it you will see that the use free is bound to use it on programs for which the source code must be visible
Personally, after trying both of them, I prefer MsSql
 

Xfood

Expert
Licensed User
Faster, secure and 12 million records resulting in database size of 39kb only, meaning the data compression methods we used are more than amazing :)

The time of the select query of the 12 million records were 4 seconds (ms sql 30 minutes)

Also it can work on windows, MacOS, Linux, Android, ios or even a free php server like 000webhost (the ultimate cross platform) :)

I think I have shared way too much 🤣 😅
a great new miracle, you are truly a time traveler, a futurist. Thanks Saif you are great
 

scsjc

Well-Known Member
Licensed User
Longtime User
Yes! I started with a VIC-20, went to Commodore 64, then Amiga 500, and, finally, Amiga 4000!

Ah, the good ol' days. Too bad the companies who owned those computers weren't able to capitalize on the superiority of their products!
My beginnings were also very basic, I started with a ZXSpectrum on 1984, and then I was fortunate to have an Amiga2000 in 1988 with 3MB ram, 20MB hdd, Genlock, and many other things, Impressive for its time 🚀🚀🚀

Totally agree, it hurts that these companies did not have capital to finance and compete in the market, perhaps today the standard would not have been the PC that we all know.

kikstart.png
 

amorosik

Expert
Licensed User
My beginnings were also very basic, I started with a ZXSpectrum on 1984, and then I was fortunate to have an Amiga2000 in 1988 with 3MB ram, 20MB hdd, Genlock, and many other things, Impressive for its time 🚀🚀🚀

Totally agree, it hurts that these companies did not have capital to finance and compete in the market, perhaps today the standard would not have been the PC that we all know.

View attachment 117202

Aaaaaghhh.....
From ZxSpectrum to Amiga.... from Sinclair to Commodore.... aaaggghhhhh...... betrayal, betrayal
🤣🤣🤣
 

scsjc

Well-Known Member
Licensed User
Longtime User
Aaaaaghhh.....
From ZxSpectrum to Amiga.... from Sinclair to Commodore.... aaaggghhhhh...... betrayal, betrayal
🤣🤣🤣
Amiga was not designed by comodore 🤣🤣🤣, comodore was only the manufacturer.
Do you know that he had hidden in the rom v1.2 the name of who made the Amiga,... and comodore was not able to find it when he released the Amiga to Market? 🤣🤣🤣
 

amorosik

Expert
Licensed User
Faster, secure and 12 million records resulting in database size of 39kb only, meaning the data compression methods we used are more than amazing :)

The time of the select query of the 12 million records were 4 seconds (ms sql 30 minutes)

Also it can work on windows, MacOS, Linux, Android, ios or even a free php server like 000webhost (the ultimate cross platform) :)

I think I have shared way too much 🤣 😅

4 sec vs 1800 sec ?
Faster, secure and 12 million records resulting in database size of 39kb only, meaning the data compression methods we used are more than amazing :)

The time of the select query of the 12 million records were 4 seconds (ms sql 30 minutes)

Also it can work on windows, MacOS, Linux, Android, ios or even a free php server like 000webhost (the ultimate cross platform) :)

I think I have shared way too much 🤣 😅

If the two systems have been tested under the same conditions (same hardware that supports them, same db structure, same number of rows present, search on non-indexed fields, no other program that uses cpu, etc.) the difference seems truly exceptional.
Are both interrogable via sql type language?
Are we sure that the comparison was made under the same conditions?
 

sfsameer

Well-Known Member
Licensed User
Longtime User
4 sec vs 1800 sec ?
Yes.

Are both interrogable via sql type language?
We have change the syntax a little bit to make it easier for example, to do a left join between table 1 and table 2
B4X:
Select [Table1] and [Table2]
Left Join by [Tabel1].ID = [Table2].HeaderID

Are we sure that the comparison was made under the same conditions?
The Same Environment and The Same Server.
 

sfsameer

Well-Known Member
Licensed User
Longtime User
LEFT JOIN ON 👀
is there any SQL syntax where the join is not called "ON"?
Sometimes the SQL Joins are very confusing specially if you have multiple joins in one query.
So using BY instead of ON make a big difference in understanding the query.

Also if you have noticed, the example query in my post is different from normal query, instead of "select * from" it's "Select" only
and the structure is different as well.

:)
 

Mashiane

Expert
Licensed User
Longtime User
Sometimes the SQL Joins are very confusing specially if you have multiple joins in one query.
So using BY instead of ON make a big difference in understanding the query.

Also if you have noticed, the example query in my post is different from normal query, instead of "select * from" it's "Select" only
and the structure is different as well.

. :)
Interesting...

Q. What if you just want a portion of the data in terms of particular fields?

Q. Will it be able to have offline and sync functionality?
 

sfsameer

Well-Known Member
Licensed User
Longtime User
Interesting...

Q. What if you just want a portion of the data in terms of particular fields?

Q. Will it be able to have offline and sync functionality?
1- Unlimited characters.

Currently the supported Data types :
1- Int
2- String
3- Images
4- numeric

But we are working on adding new data types, for example : Views which means you can store a layout, button, textbox, labels, etc... in the table.

2- Yes of course.

:)
 
Top