This project is intended to be a means of testing the capabilities of Apple Push Notification Services and Amazon Web Services. To do this, I have written a client iOS app and a server MacOS app that interface with both services to monitor various online triggers and send push notifications to numerous clients.
The iOS side of this project can set notification preferences that are then stored in an AWS server. The app will then recieve rich notifications whenever the server is triggered by one of these specified events.
This backend app uses Amazon Web Services to store user data as well as temporary images for use in rich notifications. The DynamoDB pool and S3 bucket are authenticated using a Cognito unauth identity.
Amazon DynamoDB is used as a database solution that stores the keys pushToken (indexed), data in the form of a string array, and an update tag. The iOS app writes to this database whenever the user updates their notification preferences.
Amazon S3 is used as a temporary storage solution for images created at runtime and uploaded by the app. Public read permissions to the bucket must be enabled to receive the image client-side.
In order to get the iOS app to fully function correctly, the file 'NotificationKeys.h' must be created and put in the 'Notifications' project folder. The file should look something like this:
#ifndef NotificationKeys_h
#define NotificationKeys_h
#define AWS_POOL_NAME @"pool-name"
#define AWS_POOL_ID @"us-east-1:POOLID"
#define AWS_BUCKET_NAME @"bucket-name"
#endifCocoapods is a dependency manager for Swift and ObjC projects. This app does not require additional setup to enable the pods to be used. the following pods are used:
- AWS iOS SDK - database solution


