IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> unity项目IOS本地推送消息oc版 -> 正文阅读

[游戏开发]unity项目IOS本地推送消息oc版

unity项目客户端实现本地推送

环境unity2018,mac,xcode12.4

需求:实现游戏内部定时推送,当奖励已满,或者任务完成的时候就行推送

主要接口介绍

1.注册通知,[center requestAuthorizationWithOptions:(UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert) completionHandler

参数:UNAuthorizationOptionBadge红点角标权限,

????????UNAuthorizationOptionSound提示声音权限,

????????UNAuthorizationOptionAlert通知到达时弹窗权限

回调函数:completionHandler

- (void)RegisterAPN {
    // 注册通知
    if (@available(iOS 10.0, *)) { // iOS10 以上
        UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
        center.delegate = self;
        [center requestAuthorizationWithOptions:(UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert) completionHandler:^(BOOL granted, NSError * _Nullable error) {
            if (!error) {
                NSLog(@"推送注册成功");
            }
        }];
    }
}

2.检查是否开启推送

接口center getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings * _Nonnull settings)

- (void)CheckUserNotificationEnable{ // 判断用户是否允许接收通知
    if (@available(iOS 10.0, *)) {
        UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
        [center getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings * _Nonnull settings) {
            if (settings.notificationCenterSetting == UNNotificationSettingEnabled) {
                NSLog(@"打开了通知");
                
            }else {
                NSLog(@"关闭了通知");
            }
        }];
    }
}

3.添加通知

接口:center addNotificationRequest:request withCompletionHandler:^(NSError *_Nullable error)

- (void)AddLocalNoticeWithID:(NSString *)noticeId Title:(NSString*)title Context:(NSString*)context Time:(int)time{
    if (@available(iOS 10.0, *)) {
        UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
        UNMutableNotificationContent *content = [[UNMutableNotificationContent alloc] init];
        // 标题
        content.title = title;
        //content.subtitle = [dataDict objectForKey:@"context"];
        // 内容
        content.body = context;
        // 声音
        content.sound = [UNNotificationSound defaultSound];
        content.badge = @1;

        int secTime = time;
        
        if(secTime <= 0)
        {
            return;
        }
        NSString *identifier = noticeId;
        NSTimeInterval time = [[NSDate dateWithTimeIntervalSinceNow:secTime] timeIntervalSinceNow];

        UNTimeIntervalNotificationTrigger *trigger = [UNTimeIntervalNotificationTrigger triggerWithTimeInterval:time repeats:NO];
        
        UNNotificationRequest *request = [UNNotificationRequest requestWithIdentifier:identifier content:content trigger:trigger];
        
        [center addNotificationRequest:request withCompletionHandler:^(NSError *_Nullable error) {
            NSLog(@"成功添加推送");
        }];
    }
}

4.移除通知

接口center removePendingNotificationRequestsWithIdentifiers:@[noticeId] 按noticeid移除

removeAllPendingNotificationRequests,移除所以通知

// 移除某一个指定的通知
- (void)RemoveOneNotificationWithID:(NSString *)noticeId {
    if (@available(iOS 10.0, *)) {
        UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
        [center getPendingNotificationRequestsWithCompletionHandler:^(NSArray<UNNotificationRequest *> * _Nonnull requests) {
            for (UNNotificationRequest *req in requests){
                NSLog(@"存在的ID:%@\n",req.identifier);
            }
            NSLog(@"移除currentID:%@",noticeId);
        }];
        
        [center removePendingNotificationRequestsWithIdentifiers:@[noticeId]];
    }

4.通知弹出的一些设置

unityappcontroller实现delegate? ?UNUserNotificationCenterDelegate下的两个方法

当游戏处于前台运行时,设置显示,

参数:UNNotificationPresentationOptionBadge红点角标权限,

????????UNNotificationPresentationOptionSound提示声音权限,

????????UNNotificationPresentationOptionAlert通知到达时弹窗权限

- (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler
{
? ? completionHandler(UNNotificationPresentationOptionSound);
}

willPresentNotification

通知的点击时间,我这里是设置角标为0

- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler
{
? ? [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
}


参考:https://www.cnblogs.com/iamliujiaxing/p/14923305.html

????????https://www.jianshu.com/p/9b1fa25a0712

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-07-22 14:32:32  更:2021-07-22 14:33:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 14:45:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码