AutoSMS banner

AutoSMS

13 devlogs
86h 8m 8s

Updated Project: I fixed two major bugs and a few minor ones. Android clears schedules on power off, so I added a recovery system that checks for missed windows and fires them on start-up.

Ever needed to send messages recurringly and can't be…

Updated Project: I fixed two major bugs and a few minor ones. Android clears schedules on power off, so I added a recovery system that checks for missed windows and fires them on start-up.

Ever needed to send messages recurringly and can’t be bothered? AutoSMS has you covered! I made this project because my friend asked me to keep him accountable with the gym but I didn’t want to manually send him messages everyday asking if he went. Hence I developed AutoSMS! Also the beginning of my own personal portfolio.

Unfortunately android only. But I have a demo video for iOS users on my landing page.

This project uses AI

I use AI to answer questions and to help with research. Also for debugging occasionally.

Demo Repository

Loading README...

ScrapMetal1

Okay there was a flavortown glitch not letting me post any devlogs for over a week but nonetheless:

I am officially published onto the google play store!

Fixed a mojor bug which stops the schedule from sending after 10 days. After ~10 days of the user not opening the app, android has a battery saving protocol where it moves it the background worker to a an app standby bucket. On Android 12+, apps in the bucket wont fire exact alarms. Switched from setExactAndAllowWhileIdle() to setAlarmClock().

I fixed up some device incompatibilities in the UI. Android 12+ wouldn’t adjust my design assets to fit on the screen which is weird since you would expected the modern versions to be better. But i fixed it by applying window insets to the root view of both the main activity and the add/edit schedule activity to avoid content being clipped by system bars.

Also updated my landing page site.

Attachment
0
ScrapMetal1

Added a new feature.
The ability to customise if you want your message to send late. If you need to send messages at an exact time you can toggle this off. The message will no longer send if delayed.
However if you don’t mind if the message sends late then you select the how long the delay can be and it will send if its within the threshold.

Figuring how to send messages that were supposed to send while the phone was dead straight after the phone boots up was very difficult. But I think I figured it out by creating using a BroadcastReceiver to trigger a function after every reboot. I don’t know if this will work 100% of the time but it does so far so im happy 😁.

Attachment
0
ScrapMetal1

Fixed a major bug:

  • Android was throttling my WorkManager jobs if the app hadn’t been open in a while (which is to be expected since this is an automation app). So now I am using exact alarms to wake up the android OS and then triggering the work manager. The exact alarm should go off regardless of whether the app has been open recently or not. But I need to test this over the next few weeks.

No visual change so I’ll just attach my favourite graphic that I made for the app :D.

Attachment
Attachment
0
ScrapMetal1

Made some final changes so that I can ship.

Attachment
0
ScrapMetal1

Shipped this project!

Hours: 67.51
Cookies: 🍪 1294
Multiplier: 19.17 cookies/hr

This was my first deep dive into web/app development and I am proud to have built a functional SMS automation app that is genuinely useful to me and hopefully many others.

I also built my own site at eliascorp.org where I hosted the landing page for the app. I plan to add many more projects onto that site in the future.

I learnt:

  • Kotlin + xml + Android app architecture
  • Html/CSS
  • How the android OS works.
  • How to make clean, responsive, dynamic UIs

The hardest part was making it work reliably all the time and across different devices. As my code got bigger and bigger finding bugs became almost impossible even if I asked AI.

But after 6 months and over 2800 lines of code I am very happy with the result. I built it to solve a personal need, and I hope it helps you too! (unless you have an iOS phone. Can’t help you then)

ScrapMetal1

DONE and LAUNCHED!! I am into the closed testing trials and should get approved in 14 days. Check out my listing below.

  • Also I worked on my site a lot and created an app landing page so people can download my app easily while its still in the closed testing phase. Check it out at https://eliascorp.org/autosms/
  • Got AI to write me a ToS so I don’t get sued.
  • Recruited some closed testers through reddit
  • Created a demo video for flavortown iOS users who won’t be able to download the app. It’s a little rough.
  • Fixed this bug which stopped cloudflare from autodeploying my site.
Attachment
0
ScrapMetal1

Okay its been a while since my last devlog. I should have posted a couple dev logs in between but I’ve been stuck on this small bug and it’s driving me crazy.

The problem is when I open my app the opening animation is staggered and glitchy. This is not an application breaking bug, but it just makes the app feel low quality which I don’t want. Anyway after countless hours…. I still can’t fix it. I’ve tried dozens of things and nothing works so I’m just hoping someone more experienced in app dev can lend me hand at some point. Besides that, I got a lot of other things done while I was trying to figure that one out:

  • I created the graphics for my App store listing. Check it out below. Looks pretty neat right? I spent a while learning photoshop and then just gave up used templates to stitch together the images. I also threw in a few pop culture references to create a hook.
  • Added a sort button to organise the schedules.
  • Fixed the hourly reoccuring logic to work after a reboot.
  • Filled in all the paperwork for google
  • Fixed some other bugs and polished up the ui.

I think one more devlog then I am done. This time for real!

Attachment
Attachment
Attachment
Attachment
Attachment
0
ScrapMetal1

I’m officially a proud owner of my own domain now! Check it out at (eliascorp.org). I bought this domain through cloudflare so I can host my privacy policy (https://eliascorp.org/autosms/privacy/) for AutoSMS and eventually other projects.

While I’m pretty familiar with xml I want to learn html+css comprehensively for web design so I coded the entire privacy policy in html. This took me a while. I also don’t want to get sued so I made sure to do my research regarding avoiding liabilities if it ever comes to that.

Attachment
Attachment
0
ScrapMetal1

Okay so when I said I was done… that was a lie. I still have a lot of bugs and things I need to fix. Every time I’m close to publishing something comes up, like a certain permission I’m not allowed to use. THEN I have to change that. That change causes more bugs. I have to fix those…. Endless cycle. I want to die. But on the bright side I really touched up all the standard android ui and made it pretty. I have the github release done if anyone wants to try it out.
Almost there.

Attachment
0
ScrapMetal1

OKAY! I think I am finally done.

  • I fixed up a lot of bugs. a lot.
  • Realised that I need a start date for my messages otherwise it send before the scheduled time.
  • Created a couple notes so that users know what to expect.
  • Generated an icon for my app (AI generated). As shown below. What do you think? Should I keep the AI generate or just make a simple icon myself with photoshop?

Time to launch onto the google play store. However I need 20 testers to test continuously for 14 days. I don’t even know 20 people with android phones. 😭

I think I will ship before that. Gonna make a website that allows people to sign up for testing.

Attachment
Attachment
0
ScrapMetal1

Added custom time intervals. You can send daily, weekly or monthly messages now. You can toggle on and off if you don’t want it to be reoccurring.
Also added custom intervals for every 3 days for example or every 5 hours.

This took a lot of coding and debugging. But it is done!! I am very happy with the app now. It’s clean and simple but highly functional.

Almost time to ship I reckon! Just need to do some testing over the next couple weeks.

Attachment
0
ScrapMetal1

Removed all the AI options 🥲.

I found out that my app won’t be approved onto the google play store because it requires a sensitive permission send_sms. The only way to get this approved is if this permission is to make the sole purpose of the app around send_sms. I don’t want to get risk getting denied so I am ensuring that this is very clearly the only purpose of the app.

Attachment
0
ScrapMetal1

OMG, I found the bug I was looking for 3 months!!!! It was a sneaky bug where my PeriodicWorkRequest (The background worker responsible for the alarm in the os) accumulated drift after every message. The problem was when I learnt how to implement a reoccurring task in the android os, I didn’t realise that this would act as a stopwatch rather than an alarm clock. After each execution the object would calculate the next time as (current time + 24 hours) instead of scheduling for the desired time. If there was any delay due to androids battery optimisations or otherwise then this delay would build up and then eventually go above the max delay threshold and never send as shown in the image below.

I fixed this by implementing different logic where I set the time until the next message as (current time - scheduled time).

Next up, I want to implement custom time periods.

Attachment
0
ScrapMetal1

Brought over all my existing project for this app and created a remote repo. Still learning git so this took me a while. I have a really annoying bug that I am trying to solve where my messages stop sending after 7 days. I can’t find the issue in the code anywhere. I guess I just gotta keep debugging 😒

Attachment
0