Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions docs/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,11 @@ Support

Release Notes
-------------
### Upcoming
- Changes
- Messaging: Fixed a crash when opening a push notification.
([#1091](https://github.com/firebase/firebase-unity-sdk/issues/1091)).

### 12.2.0
- Changes
- General: Update to Firebase C++ SDK version 12.2.0.
Expand Down
4 changes: 4 additions & 0 deletions messaging/src/FirebaseNotification.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ namespace Firebase.Messaging {
/// implementation.
public sealed class AndroidNotificationParams {
internal static AndroidNotificationParams FromInternal(AndroidNotificationParamsInternal other) {
if (other == null) return null;

AndroidNotificationParams android = new AndroidNotificationParams();
android.ChannelId = other.channel_id;
return android;
Expand All @@ -45,6 +47,8 @@ public void Dispose(bool disposing) { }
/// library.
public sealed class FirebaseNotification {
internal static FirebaseNotification FromInternal(FirebaseNotificationInternal other) {
if (other == null) return null;

FirebaseNotification notification = new FirebaseNotification();
notification.Android = AndroidNotificationParams.FromInternal(other.android);
notification.Badge = other.badge;
Expand Down
6 changes: 5 additions & 1 deletion messaging/src/swig/messaging.i
Original file line number Diff line number Diff line change
Expand Up @@ -316,18 +316,22 @@ void SendPendingEvents() {
// messageReceivedDelegate.
[MonoPInvokeCallback(typeof(MessageReceivedDelegate))]
private static int MessageReceivedDelegateMethod(System.IntPtr message) {
int tookOwnership = 0;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If this has to be an int vs. a bool, add a comment for why?

return ExceptionAggregator.Wrap(() => {
// Use a local copy so another thread cannot unset this before we use it.
var handler = FirebaseMessagingInternal.MessageReceivedInternal;
if (handler != null) {
// Take ownership, and track it so that the caller of this knows, even
// if an exception is thrown, since the C# object will still delete it.
FirebaseMessageInternal messageInternal = new FirebaseMessageInternal(message, true);
tookOwnership = 1;
handler(null, new Firebase.Messaging.MessageReceivedEventArgs(
FirebaseMessage.FromInternal(messageInternal)));
messageInternal.Dispose();
return 1;
}
return 0;
}, 0);
}, tookOwnership);
}

// Called from ListenerImpl::TokenReceived() via the
Expand Down