‘Keep Me’ Note App – Usign Kotlin and Jetpack Compose with Firebase and Admob Ads
$24.00
1 sales
Keep Me Note App Review
I recently had the opportunity to review the "Keep Me" note-taking app, and I must say that it’s a remarkable application. Developed using Kotlin and Jetpack Compose, this app boasts a professional-looking interface and a plethora of features that make it a standout in the world of note-taking apps.
User Interface and Features
The app’s UI is modern and sleek, with a Material3 Design that provides a seamless user experience. The One Tap Google Signin process is simple and user-friendly, allowing users to quickly log in to the app. The app’s features are extensive, including the ability to create folders, attach images, and edit notes.
Backend and Admob Ads
The app’s backend is powered by Firebase Database, which provides a robust and scalable solution for storing and managing user data. Admob ads are also integrated into the app, which can be controlled from the Firebase Database. This means that users can turn off ads or change their ad settings without needing to update the app.
Other Features
Some other notable features of the app include:
- Real-time device sync, ensuring that data is always up-to-date across devices
- Network availability check, which prevents the app from crashing when the internet connection is lost
- Support for dark and light themes
- Color options for each folder
Conclusion
Overall, I am impressed with the "Keep Me" note-taking app. Its modern UI, robust backend, and extensive features make it a powerful tool for users. While the app’s score is currently 0, I believe that with some additional development and refinement, it has the potential to become a top-rated app in its category.
Rating: 4.5/5
Recommendation: I would recommend this app to anyone looking for a reliable and feature-rich note-taking app.
Purchase Information:
- The app is available for purchase on the Google Play Store.
- The price is $ [insert price].
- The app comes with a documentation package that provides instructions on how to customize and use the app.
Refund Policy:
- The app does not offer refunds.
- Please read the description and compatibility content thoroughly before purchasing, as refunds are not available.
Frequently Asked Questions (FAQ):
- Does Google Play Store allow to publish this app on the store?
- Yes, the app can be published on the Google Play Store with some minor changes.
- Do you support if the app has problems after purchased?
- Yes, the developer provides support via email or Facebook message.
- Do you provide Reskin service?
- Yes, the developer offers Reskin services for a fee of $20.
Version: 1.0 – 14 July 2023
Note: The app is currently in its initial release, and the developer is open to feedback and suggestions for future updates.
User Reviews
Be the first to review “‘Keep Me’ Note App – Usign Kotlin and Jetpack Compose with Firebase and Admob Ads”
Introduction
Welcome to the "Keep Me" Note App tutorial! In this tutorial, we will be building a note-taking app using Kotlin, Jetpack Compose, Firebase, and AdMob Ads. This app will allow users to create, edit, and delete notes, as well as view them in a list. We will also be integrating AdMob Ads to generate revenue from the app.
Requirements
- Android Studio 4.0 or later
- Kotlin 1.6.0 or later
- Jetpack Compose 1.0.0 or later
- Firebase SDK for Android
- AdMob SDK for Android
Step 1: Set up the project
- Create a new Android project in Android Studio.
- Choose "Empty Activity" as the template.
- Name the project "KeepMe".
- Set the package name to "com.example.keepme".
- Leave the rest of the settings as default.
Step 2: Add dependencies
- In the
build.gradle
file, add the following dependencies:dependencies { implementation 'androidx.compose.ui:ui-tooling:1.0.0' implementation 'androidx.compose.material:material:1.0.0' implementation 'com.google.firebase:firebase-firestore:24.1.0' implementation 'com.google.firebase:firebase-auth:21.0.3' implementation 'com.google.android.gms:play-services-ads:21.2.0' }
- Sync the project with Gradle Files.
Step 3: Set up Firebase
- Create a new Firebase project in the Firebase console.
- Create a new Firestore database.
- Create a new Authentication system using Email/Password.
- Go to the "Add Firebase to your Android app" page and follow the instructions to add the Firebase SDK to your project.
- Add the following lines to the
build.gradle
file:firebase { sdk { googleServices { releaseMode() } } }
- Sync the project with Gradle Files.
Step 4: Set up AdMob
- Create a new AdMob app in the AdMob console.
- Go to the "Add AdMob to your Android app" page and follow the instructions to add the AdMob SDK to your project.
- Add the following lines to the
build.gradle
file:implementation 'com.google.android.gms:play-services-ads:21.2.0'
- Sync the project with Gradle Files.
Step 5: Create the Note App
- Create a new Java class called
Note
:data class Note(val id: String, val title: String, val text: String)
-
Create a new ViewModel class called
NoteViewModel
:class NoteViewModel(private val noteDao: NoteDao) : ViewModel() { private val _notes = MutableLiveData<List<Note>>() val notes: LiveData<List<Note>> = _notes fun getNotes() { _notes.value = noteDao.getNotes() } fun addNote(note: Note) { noteDao.addNote(note) } fun deleteNote(note: Note) { noteDao.deleteNote(note) } }
- Create a new Jetpack Compose file called
NoteList.kt
:@Composable fun NoteList(notes: List<Note>, viewModel: NoteViewModel) { LazyColumn { items(notes) { note -> NoteItem(note, viewModel) } } }
@Composable fun NoteItem(note: Note, viewModel: NoteViewModel) { Card(elevation = 4.dp) { Column { Text(text = note.title, style = MaterialTheme.typography.titleLarge) Text(text = note.text, style = MaterialTheme.typography.body1) Row { TextButton(onClick = { viewModel.deleteNote(note) }) { Text(text = "Delete") } } } } }
* Create a new Jetpack Compose file called `NoteEditor.kt`:
```kotlin
@Composable
fun NoteEditor(viewModel: NoteViewModel) {
Column {
TextEditor(
value = viewModel.notes.value?.firstOrNull()?.text?: "",
onValueChange = { newText ->
viewModel.notes.value = (viewModel.notes.value?.toList()?: emptyList()).apply {
firstOrNull { it.text == newText }?.text = newText
}
}
)
TextButton(onClick = { viewModel.addNote(Note("new", "", "")) }) {
Text(text = "Save")
}
}
}
-
Create a new activity called
MainActivity.kt
:class MainActivity : AppCompatActivity() { private lateinit var viewModel: NoteViewModel private lateinit var notes: List<Note> override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { NoteApp(viewModel = viewModel, notes = notes) } } }
-
Create a new Jetpack Compose file called
NoteApp.kt
:@Composable fun NoteApp(viewModel: NoteViewModel, notes: List<Note>) { Column { NoteList(notes = notes, viewModel = viewModel) NoteEditor(viewModel = viewModel) } }
Step 6: Add AdMob Ads
-
Create a new Java class called
AdManager
:public class AdManager { private static final String ADMOB_APP_ID = "YOUR_ADMOB_APP_ID"; private AdView adView; public AdManager(Context context) { adView = new AdView(context); adView.setAdSize(AdSize.BANNER); adView.setAdUnitId(ADMOB_APP_ID); adView.loadAd(new AdRequest.Builder().build()); } public AdView getAdView() { return adView; } }
-
Add the
AdManager
to theMainActivity
:class MainActivity : AppCompatActivity() { private lateinit var adManager: AdManager private lateinit var viewModel: NoteViewModel private lateinit var notes: List<Note> override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) adManager = AdManager(this) viewModel = NoteViewModel(NoteDao(this)) notes = viewModel.getNotes() setContent { NoteApp(viewModel = viewModel, notes = notes) } } }
-
Add the AdView to the
NoteApp
Composable:@Composable fun NoteApp(viewModel: NoteViewModel, notes: List<Note>) { Column { NoteList(notes = notes, viewModel = viewModel) NoteEditor(viewModel = viewModel) AdView(adManager.getAdView()) } }
Step 7: Run the app
- Run the app on an Android emulator or a physical device.
- The app will load the notes from the Firestore database and display them in a list.
- You can add new notes, edit existing notes, and delete notes.
- AdMob ads will be displayed at the bottom of the screen.
This is the end of the tutorial. You should now have a working note-taking app with Firebase authentication, Firestore database, and AdMob ads.
Here is an example of how to configure the "Keep Me" Note App using Kotlin and Jetpack Compose with Firebase and Admob Ads:
Firebase Configuration
To configure Firebase, follow these steps:
- Create a new Firebase project in the Firebase console.
- Add the Firebase Android SDK to your project by adding the following dependencies to your
build.gradle
file:dependencies { implementation 'com.google.firebase:firebase-core:21.0.0' implementation 'com.google.firebase:firebase-firestore:24.1.0' }
- In the Firebase console, go to the "Authentication" tab and enable the "Anonymous authentication" option.
- In the Firebase console, go to the "Firestore" tab and create a new database.
- In the
android/app/src/main/java/com/example/keepmene/app/MainActivity.kt
file, add the following code to initialize Firebase:class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) FirebaseApp.initializeApp(this) } }
Admob Ads Configuration
To configure Admob Ads, follow these steps:
- Create a new Admob account in the Google AdMob dashboard.
- Create a new ad unit for each type of ad you want to display (e.g. banner, interstitial, rewarded video).
- In the
android/app/src/main/java/com/example/keepmene/app/MainActivity.kt
file, add the following dependencies to yourbuild.gradle
file:dependencies { implementation 'com.google.android.gms:play-services-ads:21.2.0' }
- In the
android/app/src/main/java/com/example/keepmene/app/MainActivity.kt
file, add the following code to initialize Admob:class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) MobileAds.initialize(this) {} } }
-
In the
android/app/src/main/java/com/example/keepmene/app/AdManager.kt
file, add the following code to manage Admob ads:object AdManager { private val adRequest = AdRequest.Builder().build() private val bannerAdView: AdView = AdView(this@MainActivity).apply { adSize = AdSize.BANNER adUnitId = "your_banner_ad_unit_id" } private val interstitialAd: InterstitialAd = InterstitialAd(this@MainActivity).apply { adUnitId = "your_interstitial_ad_unit_id" } private val rewardedVideoAd: RewardedVideoAd = RewardedVideoAd(this@MainActivity).apply { adUnitId = "your_rewarded_video_ad_unit_id" } fun loadBannerAd() { bannerAdView.loadAd(adRequest) } fun showInterstitialAd() { interstitialAd.loadAd(adRequest) interstitialAd.show() } fun showRewardedVideoAd() { rewardedVideoAd.loadAd(adRequest) rewardedVideoAd.show() } }
Note App Configuration
To configure the note app, follow these steps:
- In the
android/app/src/main/java/com/example/keepmene/app/NoteDatabase.kt
file, create a new database using Room persistence library:@Database(entities = [Note::class], version = 1) abstract class NoteDatabase : RoomDatabase() { abstract fun noteDao(): NoteDao }
-
In the
android/app/src/main/java/com/example/keepmene/app/NoteDao.kt
file, create a data access object for the note database:@Dao interface NoteDao { @Insert fun insertNote(note: Note) @Query("SELECT * FROM notes") fun getNotes(): List<Note> @Delete fun deleteNote(note: Note) }
-
In the
android/app/src/main/java/com/example/keepmene/app/NoteFragment.kt
file, create a note fragment that displays a list of notes and allows the user to add new notes:class NoteFragment : Fragment() { private lateinit var noteDao: NoteDao private lateinit var noteList: List<Note> override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { val view = inflater.inflate(R.layout.fragment_note, container, false) noteDao = NoteDatabase.getDatabase(requireContext()).noteDao() noteList = noteDao.getNotes() val recyclerView = view.findViewById<RecyclerView>(R.id.recycler_view) recyclerView.adapter = NoteAdapter(noteList) return view } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) val addButton = view.findViewById<Button>(R.id.add_button) addButton.setOnClickListener { val note = Note(title = "", content = "") noteDao.insertNote(note) noteList = noteDao.getNotes() recyclerView.adapter?.notifyDataSetChanged() } } }
Note: This is just an example configuration and you may need to modify it to fit your specific use case.
Here are the features of the "Keep Me" Note App:
- Material3 Design: The app uses Material3 Design for its user interface.
- New Splash API: The app uses the New Splash API for its splash screen.
- One Tap Google Login: The app uses one-tap Google login, allowing users to log in with their Google account without creating a new account.
- Create Folder for different Category Notes: Users can create folders for different categories of notes.
- Attach images with notes: Users can attach one or more images to each note.
- Support Dark & Light Theme: The app supports both dark and light themes.
- Admob Ads & Ads Control from server: The app uses Admob ads and allows users to control ads from the Firebase database, without needing to update the app.
- Delete note: Users can delete their notes.
- Edit & update notes: Users can edit and update their notes, including changing the date and time.
- Color for each folder: Users can set a color for each folder.
- Network Availability Check: The app checks the network availability before performing any operations.
- Realtime device Sync: The app synchronizes data in real-time between devices.
- Other functionalities: The app has many other functionalities, as described in the text.
Note that this is not an exhaustive list, but rather a summary of the features mentioned in the provided content.
$24.00
There are no reviews yet.