Chore: Update notifications for Android;
- Use new updated fork of react-native-push-notification without google - Create channel for PushNotifications - Adapt AndroidManifest.xml
This commit is contained in:
@@ -7,6 +7,9 @@
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
|
||||
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
||||
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
|
||||
<uses-permission android:name="android.permission.USE_EXACT_ALARM" />
|
||||
<uses-permission tools:node="remove" android:name="android.permission.READ_PHONE_STATE" />
|
||||
<uses-permission tools:node="remove" android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||
<uses-permission tools:node="remove" android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||
@@ -22,44 +25,34 @@
|
||||
|
||||
|
||||
<application
|
||||
android:name=".MainApplication"
|
||||
android:label="@string/app_name"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:roundIcon="@mipmap/ic_launcher_round"
|
||||
android:allowBackup="false"
|
||||
android:theme="@style/AppTheme">
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:name=".MainApplication"
|
||||
android:label="@string/app_name"
|
||||
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
|
||||
android:launchMode="singleTask"
|
||||
android:windowSoftInputMode="adjustPan"
|
||||
android:screenOrientation="sensorPortrait">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<provider
|
||||
android:name="androidx.core.content.FileProvider"
|
||||
android:authorities="com.drip.provider"
|
||||
android:grantUriPermissions="true"
|
||||
android:exported="false">
|
||||
<meta-data
|
||||
tools:replace="android:resource"
|
||||
android:name="android.support.FILE_PROVIDER_PATHS"
|
||||
android:resource="@xml/filepaths" />
|
||||
</provider>
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:roundIcon="@mipmap/ic_launcher_round"
|
||||
android:allowBackup="false"
|
||||
android:theme="@style/AppTheme">
|
||||
|
||||
<meta-data android:name="com.dieam.reactnativepushnotification.notification_foreground"
|
||||
android:value="false"/>
|
||||
<!-- Change the resource name to your App's accent color - or any other color you want -->
|
||||
<meta-data android:name="com.dieam.reactnativepushnotification.notification_color"
|
||||
android:resource="@android:color/white"/> <!-- or @android:color/{name} to use a standard color -->
|
||||
<meta-data
|
||||
android:name="com.dieam.reactnativepushnotification.notification_foreground"
|
||||
android:value="false" />
|
||||
<meta-data
|
||||
android:name="com.dieam.reactnativepushnotification.notification_color"
|
||||
android:resource="@color/purple" />
|
||||
<meta-data
|
||||
android:name="com.dieam.reactnativepushnotification.default_notification_channel_id"
|
||||
android:value="..." />
|
||||
|
||||
<receiver android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationActions" />
|
||||
<receiver android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationPublisher" />
|
||||
<receiver android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationBootEventReceiver">
|
||||
<receiver
|
||||
android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationActions"
|
||||
android:exported="false"
|
||||
tools:ignore="MissingClass" />
|
||||
<receiver
|
||||
android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationPublisher"
|
||||
android:exported="false" />
|
||||
<receiver
|
||||
android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationBootEventReceiver"
|
||||
android:exported="false"
|
||||
>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.BOOT_COMPLETED" />
|
||||
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
|
||||
@@ -67,12 +60,5 @@
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
|
||||
<service
|
||||
android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationListenerService"
|
||||
android:exported="false" >
|
||||
<intent-filter>
|
||||
<action android:name="com.google.firebase.MESSAGING_EVENT" />
|
||||
</intent-filter>
|
||||
</service>
|
||||
</application>
|
||||
</manifest>
|
||||
|
||||
@@ -14,4 +14,5 @@
|
||||
<color name="grey">#A5A5A5</color>
|
||||
<color name="orange">#F38337</color>
|
||||
<color name="purple">#3A2671</color>
|
||||
<color name="turquoiseDark">#69CBC1</color>
|
||||
</resources>
|
||||
@@ -46,12 +46,9 @@ allprojects {
|
||||
}
|
||||
|
||||
ext {
|
||||
googlePlayServicesVersion = "+" // default: "+"
|
||||
firebaseMessagingVersion = "21.1.0" // default: "+"
|
||||
|
||||
buildToolsVersion = "30.0.2"
|
||||
minSdkVersion = 23
|
||||
compileSdkVersion = 30
|
||||
targetSdkVersion = 30
|
||||
ndkVersion = "21.4.7075529"
|
||||
ndkVersion = "21.4.7075529"
|
||||
}
|
||||
|
||||
+19
-7
@@ -1,8 +1,9 @@
|
||||
import { Platform } from 'react-native'
|
||||
import {
|
||||
tempReminderObservable,
|
||||
periodReminderObservable,
|
||||
} from '../local-storage'
|
||||
import Notification from 'react-native-push-notification'
|
||||
import * as PN from 'react-native-push-notification'
|
||||
import Moment from 'moment'
|
||||
import { LocalDate } from '@js-joda/core'
|
||||
|
||||
@@ -12,7 +13,15 @@ import cycleModule from './cycle'
|
||||
import nothingChanged from '../db/db-unchanged'
|
||||
|
||||
export default function setupNotifications(navigate, setDate) {
|
||||
Notification.configure({
|
||||
const PushNotification = Platform.OS === 'ios' ? PN : PN.default
|
||||
|
||||
PushNotification.createChannel({
|
||||
channelId: 'drip-channel-id', // (required)
|
||||
channelName: 'drip reminder', // (required)
|
||||
playSound: false, // (optional) default: true
|
||||
})
|
||||
|
||||
PushNotification.configure({
|
||||
onNotification: (notification) => {
|
||||
// https://github.com/zo0r/react-native-push-notification/issues/966#issuecomment-479069106
|
||||
if (notification.data?.id === '1' || notification.id === '1') {
|
||||
@@ -26,7 +35,7 @@ export default function setupNotifications(navigate, setDate) {
|
||||
})
|
||||
|
||||
tempReminderObservable((reminder) => {
|
||||
Notification.cancelLocalNotifications({ id: '1' })
|
||||
PushNotification.cancelLocalNotification({ id: '1' })
|
||||
if (reminder.enabled) {
|
||||
const [hours, minutes] = reminder.time.split(':')
|
||||
let target = new Moment()
|
||||
@@ -38,31 +47,33 @@ export default function setupNotifications(navigate, setDate) {
|
||||
target = target.add(1, 'd')
|
||||
}
|
||||
|
||||
Notification.localNotificationSchedule({
|
||||
PushNotification.localNotificationSchedule({
|
||||
id: '1',
|
||||
userInfo: { id: '1' },
|
||||
message: labels.tempReminder.notification,
|
||||
date: target.toDate(),
|
||||
vibrate: false,
|
||||
repeatType: 'day',
|
||||
channelId: 'drip-channel-id',
|
||||
})
|
||||
}
|
||||
}, false)
|
||||
|
||||
periodReminderObservable((reminder) => {
|
||||
Notification.cancelLocalNotifications({ id: '2' })
|
||||
PushNotification.cancelLocalNotification({ id: '2' })
|
||||
if (reminder.enabled) setupPeriodReminder()
|
||||
}, false)
|
||||
|
||||
getBleedingDaysSortedByDate().addListener((_, changes) => {
|
||||
// the listener fires on setup, so we check if there were actually any changes
|
||||
if (nothingChanged(changes)) return
|
||||
Notification.cancelLocalNotifications({ id: '2' })
|
||||
PushNotification.cancelLocalNotification({ id: '2' })
|
||||
if (periodReminderObservable.value.enabled) setupPeriodReminder()
|
||||
})
|
||||
}
|
||||
|
||||
function setupPeriodReminder() {
|
||||
const PushNotification = Platform.OS === 'ios' ? PN : PN.default
|
||||
const bleedingPrediction = cycleModule().getPredictedMenses()
|
||||
if (bleedingPrediction.length > 0) {
|
||||
const predictedBleedingStart = Moment(
|
||||
@@ -80,12 +91,13 @@ function setupPeriodReminder() {
|
||||
// period is likely to start in 3 to 3 + (length of prediction - 1) days
|
||||
const daysToEndOfPrediction = bleedingPrediction[0].length + 2
|
||||
|
||||
Notification.localNotificationSchedule({
|
||||
PushNotification.localNotificationSchedule({
|
||||
id: '2',
|
||||
userInfo: { id: '2' },
|
||||
message: labels.periodReminder.notification(daysToEndOfPrediction),
|
||||
date: reminderDate.toDate(),
|
||||
vibrate: false,
|
||||
channelId: 'drip-channel-id',
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -34,7 +34,7 @@
|
||||
"@react-native-async-storage/async-storage": "^1.17.9",
|
||||
"@react-native-community/art": "^1.2.0",
|
||||
"@react-native-community/datetimepicker": "^6.3.1",
|
||||
"@react-native-community/push-notification-ios": "^1.8.0",
|
||||
"@react-native-community/push-notification-ios": "^1.11.0",
|
||||
"csvtojson": "^2.0.8",
|
||||
"i18next": "^22.0.2",
|
||||
"jshashes": "^1.0.8",
|
||||
@@ -49,7 +49,7 @@
|
||||
"react-native-document-picker": "^8.1.1",
|
||||
"react-native-fs": "^2.20.0",
|
||||
"react-native-modal-datetime-picker": "14.0.0",
|
||||
"react-native-push-notification": "3.2.1",
|
||||
"react-native-push-notification": "github:bl00dymarie/react-native-push-notification",
|
||||
"react-native-share": "^7.9.0",
|
||||
"react-native-simple-toast": "^1.1.3",
|
||||
"react-native-size-matters": "^0.4.0",
|
||||
|
||||
Reference in New Issue
Block a user