diff options
author | Sergey Minakov <naithar@icloud.com> | 2021-01-26 18:35:48 +0300 |
---|---|---|
committer | Sergey Minakov <naithar@icloud.com> | 2021-01-26 18:39:45 +0300 |
commit | 366ce084f494be06e7c6d166c6e4688c2db7dd7a (patch) | |
tree | 5403375f81f922a70c962cc9f2052f1074a3c7d2 /platform/iphone | |
parent | 6bea3015330473794ae0bc25d6d25f3d0bd3ead4 (diff) | |
download | redot-engine-366ce084f494be06e7c6d166c6e4688c2db7dd7a.tar.gz |
[iOS] Rework push notification methods usage
Moved AppDelegate push notifications methods implementation to 'GODOT_ENABLE_PUSH_NOTIFICATIONS'
which can be used in plugins to implement APNS plugins.
Diffstat (limited to 'platform/iphone')
-rw-r--r-- | platform/iphone/godot_app_delegate.h | 24 | ||||
-rw-r--r-- | platform/iphone/godot_app_delegate.m | 6 |
2 files changed, 27 insertions, 3 deletions
diff --git a/platform/iphone/godot_app_delegate.h b/platform/iphone/godot_app_delegate.h index 6335ada50e..76d8aa409f 100644 --- a/platform/iphone/godot_app_delegate.h +++ b/platform/iphone/godot_app_delegate.h @@ -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 diff --git a/platform/iphone/godot_app_delegate.m b/platform/iphone/godot_app_delegate.m index 7b9cf7893c..9d298162f3 100644 --- a/platform/iphone/godot_app_delegate.m +++ b/platform/iphone/godot_app_delegate.m @@ -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; |