Skip to content

[Bug]: In AppboyAppDelegate, the fetchCompletionHandler is called twice #107

@pletoss

Description

@pletoss

Braze Unity SDK Version

7.1.0

Steps To Reproduce

The fetchCompletionHandler in AppboyAppDelegate is invoked twice:
• First Call: Link to first occurrence
• Second Call: Link to second occurrence

Normally, calling the completion handler twice might not be an issue. However, when combined with FirebaseMessaging/GoogleUtilities’ swizzled code (see this exception trigger), it provokes an exception because GoogleUtilities does not expect multiple invocations.

For reference, here’s the crash stack trace:

Crashed: com.apple.main-thread
0  libdispatch.dylib              0x39e5c dispatch_group_leave.cold.1 + 36
1  libdispatch.dylib              0x4e20 _dispatch_group_wake + 134
2  BrazeKit                       0x1b4e3c OUTLINED_FUNCTION_0 + 12160
3  BrazeKit                       0x86d1c OUTLINED_FUNCTION_4 + 584
4  libdispatch.dylib              0x2248 _dispatch_call_block_and_release + 32
5  libdispatch.dylib              0x3fa8 _dispatch_client_callout + 20
6  libdispatch.dylib              0x12a34 _dispatch_main_queue_drain + 984
7  libdispatch.dylib              0x1264c _dispatch_main_queue_callback_4CF + 44
8  CoreFoundation                 0x79bcc __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 16
9  CoreFoundation                 0x761c0 __CFRunLoopRun + 1996
10 CoreFoundation                 0xc8284 CFRunLoopRunSpecific + 588
11 GraphicsServices               0x14c0 GSEventRunModal + 164
12 UIKitCore                      0x3ee674 -[UIApplication _run] + 816
13 UIKitCore                      0x14e88 UIApplicationMain + 340
14 UnityFramework                 0x17e54 -[UnityFramework runUIApplicationMainWithArgc:argv:] + 102 ([main.mm:102](http://main.mm:102/))
15 GameName             0x412c main + 28 ([main.mm:28](http://main.mm:28/))
16 ???                            0x1ba521de8 (Missing

Expected Behavior

fetchCompletionHandler should be called exactly once.

Actual Incorrect Behavior

It is called twice—once via the superclass’s didReceiveRemoteNotification:fetchCompletionHandler and once within BrazeKit—triggering an exception in FirebaseMessaging/GoogleUtilities.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions