Merge PR #266: Try using the UserNotification framework
This commit is contained in:
commit
50af4c3d3d
@ -102,6 +102,8 @@ ios: {
|
|||||||
OBJECTIVE_SOURCES += $$PWD/../packaging/ios/pushnotifications.mm \
|
OBJECTIVE_SOURCES += $$PWD/../packaging/ios/pushnotifications.mm \
|
||||||
$$PWD/../packaging/ios/platformhelperios.mm
|
$$PWD/../packaging/ios/platformhelperios.mm
|
||||||
|
|
||||||
|
LIBS += -framework "UserNotifications"
|
||||||
|
|
||||||
QMAKE_TARGET_BUNDLE_PREFIX = io.guh
|
QMAKE_TARGET_BUNDLE_PREFIX = io.guh
|
||||||
QMAKE_BUNDLE = nymeaApp
|
QMAKE_BUNDLE = nymeaApp
|
||||||
# Configure generated xcode project to have our bundle id
|
# Configure generated xcode project to have our bundle id
|
||||||
|
|||||||
@ -1,10 +1,13 @@
|
|||||||
#import "UIKit/UIKit.h"
|
#import "UIKit/UIKit.h"
|
||||||
|
#import <UserNotifications/UserNotifications.h>
|
||||||
|
|
||||||
// Include our C++ class
|
// Include our C++ class
|
||||||
#include "pushnotifications.h"
|
#include "pushnotifications.h"
|
||||||
|
|
||||||
|
#include <QDebug>
|
||||||
|
|
||||||
// This is hidden, so we declare it here to hook into it
|
// This is hidden, so we declare it here to hook into it
|
||||||
@interface QIOSApplicationDelegate
|
@interface QIOSApplicationDelegate: UIResponder <UIApplicationDelegate,UNUserNotificationCenterDelegate>
|
||||||
@end
|
@end
|
||||||
|
|
||||||
//add a category to QIOSApplicationDelegate
|
//add a category to QIOSApplicationDelegate
|
||||||
@ -12,31 +15,55 @@
|
|||||||
// No need to declare the methods here, since we’re overriding existing ones
|
// No need to declare the methods here, since we’re overriding existing ones
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
|
||||||
@implementation QIOSApplicationDelegate (APNSApplicationDelegate)
|
@implementation QIOSApplicationDelegate (APNSApplicationDelegate)
|
||||||
|
|
||||||
- (BOOL)application:(UIApplication *)application
|
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
|
||||||
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
|
|
||||||
// Register to receive notifications from the system
|
// Register to receive notifications from the system
|
||||||
[application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];
|
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
|
||||||
|
center.delegate = self;
|
||||||
|
[center requestAuthorizationWithOptions:(UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionBadge) completionHandler:^(BOOL granted, NSError * _Nullable error){
|
||||||
|
if(!error){
|
||||||
|
[[UIApplication sharedApplication] registerForRemoteNotifications];
|
||||||
|
}
|
||||||
|
}];
|
||||||
|
|
||||||
[application registerForRemoteNotifications];
|
NSLog(@"registering for remote notifications");
|
||||||
NSLog(@"registered for remote notifications");
|
qDebug() << "Registering for remote notifications";
|
||||||
return YES;
|
return YES;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
|
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
|
||||||
NSLog(@"Did Register for Remote Notifications with Device Token (%@)", deviceToken);
|
NSLog(@"Did Register for Remote Notifications with Device Token (%@)", deviceToken);
|
||||||
|
|
||||||
const unsigned *tokenBytes = (const unsigned*)[deviceToken bytes];
|
const unsigned *tokenBytes = (const unsigned*)[deviceToken bytes];
|
||||||
NSString *tokenStr = [NSString stringWithFormat:@"%08x%08x%08x%08x%08x%08x%08x%08x",
|
NSString *tokenStr = [NSString stringWithFormat:@"%08x%08x%08x%08x%08x%08x%08x%08x",
|
||||||
ntohl(tokenBytes[0]), ntohl(tokenBytes[1]), ntohl(tokenBytes[2]),
|
ntohl(tokenBytes[0]), ntohl(tokenBytes[1]), ntohl(tokenBytes[2]),
|
||||||
ntohl(tokenBytes[3]), ntohl(tokenBytes[4]), ntohl(tokenBytes[5]),
|
ntohl(tokenBytes[3]), ntohl(tokenBytes[4]), ntohl(tokenBytes[5]),
|
||||||
ntohl(tokenBytes[6]), ntohl(tokenBytes[7])];
|
ntohl(tokenBytes[6]), ntohl(tokenBytes[7])];
|
||||||
|
|
||||||
|
qDebug() << "Registering for remote notifications";
|
||||||
|
qDebug() << "Token description:" << QString::fromNSString(deviceToken.description);
|
||||||
|
qDebug() << "Parsed token:" << QString::fromNSString(tokenStr);
|
||||||
PushNotifications::instance()->setAPNSRegistrationToken(QString::fromNSString(tokenStr));
|
PushNotifications::instance()->setAPNSRegistrationToken(QString::fromNSString(tokenStr));
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
|
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
|
||||||
NSLog(@"Did Fail to Register for Remote Notifications");
|
NSLog(@"Did Fail to Register for Remote Notifications");
|
||||||
NSLog(@"%@, %@", error, error.localizedDescription);
|
NSLog(@"%@, %@", error, error.localizedDescription);
|
||||||
|
qWarning() << "Failed to register for notifications:" << QString::fromNSString(error.localizedDescription);
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler{
|
||||||
|
NSLog(@"User Info : %@",notification.request.content.userInfo);
|
||||||
|
qDebug() << "willPresentNotification called!";
|
||||||
|
completionHandler(UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionBadge);
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)())completionHandler{
|
||||||
|
NSLog(@"User Info : %@",response.notification.request.content.userInfo);
|
||||||
|
qDebug() << "received notification response!";
|
||||||
|
completionHandler();
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
Reference in New Issue
Block a user