| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- //go:build !ci
- // +build !ci
- #import <Foundation/Foundation.h>
- #if __MAC_OS_X_VERSION_MAX_ALLOWED >= 101400
- #import <UserNotifications/UserNotifications.h>
- #endif
- static int notifyNum = 0;
- extern void fallbackSend(char *cTitle, char *cBody);
- bool isBundled() {
- return [[NSBundle mainBundle] bundleIdentifier] != nil;
- }
- #if __MAC_OS_X_VERSION_MAX_ALLOWED >= 101400
- void doSendNotification(UNUserNotificationCenter *center, NSString *title, NSString *body) {
- UNMutableNotificationContent *content = [UNMutableNotificationContent new];
- [content autorelease];
- content.title = title;
- content.body = body;
- notifyNum++;
- NSString *identifier = [NSString stringWithFormat:@"fyne-notify-%d", notifyNum];
- UNNotificationRequest *request = [UNNotificationRequest requestWithIdentifier:identifier
- content:content trigger:nil];
- [center addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) {
- if (error != nil) {
- NSLog(@"Could not send notification: %@", error);
- }
- }];
- }
- void sendNotification(char *cTitle, char *cBody) {
- UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
- NSString *title = [NSString stringWithUTF8String:cTitle];
- NSString *body = [NSString stringWithUTF8String:cBody];
- UNAuthorizationOptions options = UNAuthorizationOptionAlert;
- [center requestAuthorizationWithOptions:options
- completionHandler:^(BOOL granted, NSError *_Nullable error) {
- if (!granted) {
- if (error != NULL) {
- NSLog(@"Error asking for permission to send notifications %@", error);
- // this happens if our app was not signed, so do it the old way
- fallbackSend((char *)[title UTF8String], (char *)[body UTF8String]);
- } else {
- NSLog(@"Unable to get permission to send notifications");
- }
- } else {
- doSendNotification(center, title, body);
- }
- }];
- }
- #else
- void sendNotification(char *cTitle, char *cBody) {
- fallbackSend(cTitle, cBody);
- }
- #endif
|