Merge pull request #45484 from naithar/fix/ios-push-notification

[iOS] Rework/Fix APNS usage.
This commit is contained in:
Rémi Verschelde 2021-01-26 22:00:11 +01:00 committed by GitHub
commit 1cfa1b48f9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 27 additions and 3 deletions

View File

@ -31,6 +31,7 @@
#import <UIKit/UIKit.h>
typedef NSObject<UIApplicationDelegate> ApplicationDelegateService;
typedef void (^APNSNotification)(UIBackgroundFetchResult);
@interface GodotApplicalitionDelegate : NSObject <UIApplicationDelegate>
@ -38,4 +39,27 @@ typedef NSObject<UIApplicationDelegate> ApplicationDelegateService;
+ (void)addService:(ApplicationDelegateService *)service;
- (void)godot:(UIApplication *)application receivedNotificationToken:(NSData *)deviceToken;
- (void)godot:(UIApplication *)application receivedNotificationError:(NSError *)error;
- (void)godot:(UIApplication *)application receivedNotification:(NSDictionary *)userInfo completion:(APNSNotification)completionHandler;
@end
#define GODOT_ENABLE_PUSH_NOTIFICATIONS \
@interface GodotApplicalitionDelegate (PushNotifications) \
@end \
@implementation GodotApplicalitionDelegate (PushNotifications) \
-(void)application : (UIApplication *)application \
didRegisterForRemoteNotificationsWithDeviceToken : (NSData *)deviceToken { \
[self godot:application receivedNotificationToken:deviceToken]; \
} \
-(void)application : (UIApplication *)application \
didFailToRegisterForRemoteNotificationsWithError : (NSError *)error { \
[self godot:application receivedNotificationError:error]; \
} \
-(void)application : (UIApplication *)application \
didReceiveRemoteNotification : (NSDictionary *)userInfo \
fetchCompletionHandler : (APNSNotification)completionHandler { \
[self godot:application receivedNotification:userInfo completion:completionHandler]; \
} \
@end

View File

@ -302,7 +302,7 @@ static NSMutableArray<ApplicationDelegateService *> *services = nil;
// MARK: Remote Notification
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
- (void)godot:(UIApplication *)application receivedNotificationToken:(NSData *)deviceToken {
for (ApplicationDelegateService *service in services) {
if (![service respondsToSelector:_cmd]) {
continue;
@ -312,7 +312,7 @@ static NSMutableArray<ApplicationDelegateService *> *services = nil;
}
}
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
- (void)godot:(UIApplication *)application receivedNotificationError:(NSError *)error {
for (ApplicationDelegateService *service in services) {
if (![service respondsToSelector:_cmd]) {
continue;
@ -322,7 +322,7 @@ static NSMutableArray<ApplicationDelegateService *> *services = nil;
}
}
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler {
- (void)godot:(UIApplication *)application receivedNotification:(NSDictionary *)userInfo completion:(APNSNotification)completionHandler {
for (ApplicationDelegateService *service in services) {
if (![service respondsToSelector:_cmd]) {
continue;