-
Notifications
You must be signed in to change notification settings - Fork 4k
Improve Android notification threading, categorisation, and profile images #19613
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
32 commits
Select commit
Hold shift + click to select a range
0a72a27
temporarily enable debugging for local notifications
Julesssss 000240d
improve handling of missing onyxData notification payload
Julesssss 84c3474
Merge branch 'main' into jules-notificationPayload
Julesssss 65b2f68
Merge branch 'main' into jules-notificationPayload
Julesssss 4852fd6
temporarily flip iOS Airship keys
Julesssss 0567ca7
Merge branch 'main' into jules-notificationPayload
Julesssss ae8ddfe
Merge branch 'main' into jules-notificationPayload
Julesssss 20618fb
only use Android conversation notification style for rooms
Julesssss c075778
always enable conversation notifications, but disable the title for n…
Julesssss f24386a
add notification logging
Julesssss 242a7e1
remove unused notification line and reuse const for key
Julesssss cde416d
format the AndroidManifest file correctly
Julesssss 0756a36
add notification xml metadata
Julesssss 34325cc
update notification categories
Julesssss 0082ffb
cache large profile avatar for notifications
Julesssss 3b90cd7
use large notification avatar icon
Julesssss 32f37b7
use long for reportID to prevent negative invalid reportID
Julesssss 1ff11d2
Merge branch 'main' into jules-notificationPayload
Julesssss 9c6bd11
Merge branch 'main' into jules-notificationPayload
Julesssss 4ea026a
fix issue where notification cache wasn't dismissed
Julesssss bb6bc29
prevent peek notification from being expanded, and refactor roomName …
Julesssss b462463
revert to max priority notifications, to ensure they peek above other…
Julesssss 1b1ad48
clean up unused imports
Julesssss 37c74ba
Merge branch 'main' into jules-notificationPayload
Julesssss 9ec9d6b
only use conversation notifications when multiple have been received …
Julesssss 327d88a
improve logging and documentation of Android notification logic
Julesssss 515b35f
update iOS pods
Julesssss 505b002
add iOS communication notification entitlement
Julesssss 60674e5
revert the iOS changes
Julesssss 32e43d8
remove debug config, logs, and remove unecessary newlines
Julesssss 33afa63
rooms and group chats should always use conversational styling
Julesssss 87f71e7
Merge branch 'main' into jules-notificationPayload
Julesssss File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,79 +1,92 @@ | ||
| <manifest xmlns:android="http://schemas.android.com/apk/res/android" | ||
| xmlns:tools="http://schemas.android.com/tools" | ||
| package="com.expensify.chat"> | ||
| xmlns:tools="http://schemas.android.com/tools" | ||
| package="com.expensify.chat"> | ||
|
|
||
| <uses-permission android:name="android.permission.INTERNET" /> | ||
| <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> | ||
| <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> | ||
| <uses-permission android:name="android.permission.CAMERA" /> | ||
| <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> | ||
| <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> | ||
| <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> | ||
| <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> | ||
|
|
||
| <!-- android:hardwareAccelerated is essential for Android performance: https://developer.android.com/topic/performance/hardware-accel --> | ||
| <application | ||
| android:supportsRtl="false" | ||
| android:hardwareAccelerated="true" | ||
| android:name=".MainApplication" | ||
| android:label="@string/app_name" | ||
| android:icon="@mipmap/ic_launcher" | ||
| android:roundIcon="@mipmap/ic_launcher_round" | ||
| android:allowBackup="false" | ||
| android:resizeableActivity="false" | ||
| android:theme="@style/AppTheme" | ||
| tools:replace="android:supportsRtl"> | ||
|
|
||
| <activity | ||
| android:name=".MainActivity" | ||
| android:name=".MainApplication" | ||
| android:allowBackup="false" | ||
| android:hardwareAccelerated="true" | ||
| android:icon="@mipmap/ic_launcher" | ||
| android:label="@string/app_name" | ||
| android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode" | ||
| android:launchMode="singleTask" | ||
| android:exported="true" | ||
| android:windowSoftInputMode="adjustResize" | ||
| android:theme="@style/BootTheme"> | ||
| android:resizeableActivity="false" | ||
| android:roundIcon="@mipmap/ic_launcher_round" | ||
| android:supportsRtl="false" | ||
| android:theme="@style/AppTheme" | ||
| tools:replace="android:supportsRtl"> | ||
|
|
||
| <activity | ||
| android:name=".MainActivity" | ||
| android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode" | ||
| android:exported="true" | ||
| android:label="@string/app_name" | ||
| android:launchMode="singleTask" | ||
| android:theme="@style/BootTheme" | ||
| android:windowSoftInputMode="adjustResize"> | ||
|
|
||
| <intent-filter android:autoVerify="true"> | ||
| <action android:name="android.intent.action.MAIN" /> | ||
| <category android:name="android.intent.category.LAUNCHER" /> | ||
| </intent-filter> | ||
|
|
||
| <!-- Custom URI handlers. Used to intercept Urban Airship deep links. --> | ||
| <intent-filter android:autoVerify="true"> | ||
| <action android:name="android.intent.action.VIEW" /> | ||
|
|
||
| <category android:name="android.intent.category.DEFAULT" /> | ||
| <category android:name="android.intent.category.BROWSABLE" /> | ||
|
|
||
| <data android:scheme="new-expensify" /> | ||
| </intent-filter> | ||
|
|
||
| <!-- Web URL handlers. Used to intercept web links. --> | ||
| <intent-filter android:autoVerify="true"> | ||
| <action android:name="android.intent.action.VIEW" /> | ||
|
|
||
| <category android:name="android.intent.category.DEFAULT" /> | ||
| <category android:name="android.intent.category.BROWSABLE" /> | ||
|
|
||
| <intent-filter android:autoVerify="true"> | ||
| <action android:name="android.intent.action.MAIN" /> | ||
| <category android:name="android.intent.category.LAUNCHER" /> | ||
| </intent-filter> | ||
| <!-- Production URLs --> | ||
| <data android:scheme="https" android:host="new.expensify.com" android:pathPrefix="/r"/> | ||
| <data android:scheme="https" android:host="new.expensify.com" android:pathPrefix="/settings"/> | ||
| <data android:scheme="https" android:host="new.expensify.com" android:pathPrefix="/details"/> | ||
| <data android:scheme="https" android:host="new.expensify.com" android:pathPrefix="/v"/> | ||
| <data android:scheme="https" android:host="new.expensify.com" android:pathPrefix="/bank-account"/> | ||
| <data android:scheme="https" android:host="new.expensify.com" android:pathPrefix="/iou"/> | ||
| <data android:scheme="https" android:host="new.expensify.com" android:pathPrefix="/enable-payments"/> | ||
| <data android:scheme="https" android:host="new.expensify.com" android:pathPrefix="/statements"/> | ||
| <data android:scheme="https" android:host="new.expensify.com" android:pathPrefix="/concierge"/> | ||
|
|
||
| <!-- Custom URI handlers. Used to intercept Urban Airship deep links. --> | ||
| <intent-filter android:autoVerify="true"> | ||
| <action android:name="android.intent.action.VIEW"/> | ||
| <category android:name="android.intent.category.DEFAULT"/> | ||
| <category android:name="android.intent.category.BROWSABLE"/> | ||
| <data android:scheme="new-expensify"/> | ||
| </intent-filter> | ||
| <!-- Staging URLs --> | ||
| <data android:scheme="https" android:host="staging.new.expensify.com" android:pathPrefix="/r"/> | ||
| <data android:scheme="https" android:host="staging.new.expensify.com" android:pathPrefix="/settings"/> | ||
| <data android:scheme="https" android:host="staging.new.expensify.com" android:pathPrefix="/details"/> | ||
| <data android:scheme="https" android:host="staging.new.expensify.com" android:pathPrefix="/v"/> | ||
| <data android:scheme="https" android:host="staging.new.expensify.com" android:pathPrefix="/bank-account"/> | ||
| <data android:scheme="https" android:host="staging.new.expensify.com" android:pathPrefix="/iou"/> | ||
| <data android:scheme="https" android:host="staging.new.expensify.com" android:pathPrefix="/enable-payments"/> | ||
| <data android:scheme="https" android:host="staging.new.expensify.com" android:pathPrefix="/statements"/> | ||
| <data android:scheme="https" android:host="staging.new.expensify.com" android:pathPrefix="/concierge"/> | ||
| </intent-filter> | ||
| </activity> | ||
|
|
||
| <!-- Web URL handlers. Used to intercept web links. --> | ||
| <intent-filter android:autoVerify="true"> | ||
| <action android:name="android.intent.action.VIEW"/> | ||
| <category android:name="android.intent.category.DEFAULT"/> | ||
| <category android:name="android.intent.category.BROWSABLE"/> | ||
| <meta-data | ||
| android:name="com.urbanairship.reactnative.AIRSHIP_EXTENDER" | ||
| android:value="com.expensify.chat.customairshipextender.CustomAirshipExtender" /> | ||
|
|
||
| <!-- Production URLs --> | ||
| <data android:scheme="https" android:host="new.expensify.com" android:pathPrefix="/r"/> | ||
| <data android:scheme="https" android:host="new.expensify.com" android:pathPrefix="/settings"/> | ||
| <data android:scheme="https" android:host="new.expensify.com" android:pathPrefix="/details"/> | ||
| <data android:scheme="https" android:host="new.expensify.com" android:pathPrefix="/v"/> | ||
| <data android:scheme="https" android:host="new.expensify.com" android:pathPrefix="/bank-account"/> | ||
| <data android:scheme="https" android:host="new.expensify.com" android:pathPrefix="/iou"/> | ||
| <data android:scheme="https" android:host="new.expensify.com" android:pathPrefix="/enable-payments"/> | ||
| <data android:scheme="https" android:host="new.expensify.com" android:pathPrefix="/statements"/> | ||
| <data android:scheme="https" android:host="new.expensify.com" android:pathPrefix="/concierge"/> | ||
| <meta-data | ||
| android:name="com.google.firebase.messaging.default_notification_icon" | ||
| android:resource="@drawable/ic_launcher" /> | ||
|
Comment on lines
+83
to
+85
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is a new addition. It sets a default notification icon |
||
|
|
||
| <!-- Staging URLs --> | ||
| <data android:scheme="https" android:host="staging.new.expensify.com" android:pathPrefix="/r"/> | ||
| <data android:scheme="https" android:host="staging.new.expensify.com" android:pathPrefix="/settings"/> | ||
| <data android:scheme="https" android:host="staging.new.expensify.com" android:pathPrefix="/details"/> | ||
| <data android:scheme="https" android:host="staging.new.expensify.com" android:pathPrefix="/v"/> | ||
| <data android:scheme="https" android:host="staging.new.expensify.com" android:pathPrefix="/bank-account"/> | ||
| <data android:scheme="https" android:host="staging.new.expensify.com" android:pathPrefix="/iou"/> | ||
| <data android:scheme="https" android:host="staging.new.expensify.com" android:pathPrefix="/enable-payments"/> | ||
| <data android:scheme="https" android:host="staging.new.expensify.com" android:pathPrefix="/statements"/> | ||
| <data android:scheme="https" android:host="staging.new.expensify.com" android:pathPrefix="/concierge"/> | ||
| </intent-filter> | ||
| </activity> | ||
| <meta-data | ||
| android:name="com.google.firebase.messaging.default_notification_color" | ||
| android:resource="@color/bootsplash_background" /> | ||
|
Comment on lines
+87
to
+89
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is another addition, it sets the default notification background color. |
||
|
|
||
| <meta-data android:name="com.urbanairship.reactnative.AIRSHIP_EXTENDER" | ||
| android:value="com.expensify.chat.customairshipextender.CustomAirshipExtender" /> | ||
| </application> | ||
| </manifest> | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Most of the manifest changes are fixing bad formatting. I will comment to point out the actual changes.