美文网首页
动态改变图标

动态改变图标

作者: MJBaby | 来源:发表于2019-03-23 18:02 被阅读0次

一、开始的启蒙

开始想到做这个功能,也是在早上坐公交车上班的时候翻阅技术公众号看到的,抽空就自己实现了一下。

二、开发主要步骤

  • 准备好更换的图标
  • 修改plist文件,放好图标的位置

    1.CFBundleIcons:一个字典,包含所有AppIcon信息,即上图的Icon files(iOS 5)
    2.CFBundlePrimaryIcon:如果已经在Assets.xcassets中设置了AppIcon,那么CFBundlePrimaryIcon中的配置会被忽略,3.Assets.xcassets的AppIcon将会自动配置到CFBundlePrimaryIcon中。
    4.CFBundleAlternateIcons:一个数组,负责配置可供替换的icon信息
    5.UIPrerenderedIcon:是否已经预渲染,如果不设置该项或者设为NO。系统会自动为icon进行渲染增加光泽

  • 编写代码
    1.引入工具类:FSAppIconManager
    2.添加更换按钮
    3.修改AppDelegate.m文件
///添加本地通知
#import <UserNotifications/UserNotifications.h>
@interface AppDelegate () <UNUserNotificationCenterDelegate>
@end

@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    // 注册通知
    if (@available(iOS 10.0, *)) {
        UNUserNotificationCenter* center = [UNUserNotificationCenter currentNotificationCenter];
        center.delegate = self;
        [center requestAuthorizationWithOptions:(UNAuthorizationOptionAlert + UNAuthorizationOptionSound)
                              completionHandler:^(BOOL granted, NSError * _Nullable error) {
                                  if(!error)
                                  {
                                      NSLog(@"@授权成功");
                                  }
                              }];
        [center getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings * _Nonnull settings) {
            NSLog(@"%@",settings);
        }];
    } else {
        // Fallback on earlier versions
    }
    return YES;
}

- (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler API_AVAILABLE(ios(10.0)){
    NSLog(@"willPresentNotification:%@",notification.request.content.title);
    // 这里真实需要处理交互的地方
    // 获取通知所带的数据
    NSString *apsContent = [notification.request.content.userInfo objectForKey:@"type"];
    NSLog(@"%@",apsContent);
    
    completionHandler(UNNotificationPresentationOptionAlert);
}

-(void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)(void))completionHandler API_AVAILABLE(ios(10.0)){
    //在没有启动本App(包括后台运行中)时,收到服务器推送消息,下拉消息会有快捷回复的按钮,点击按钮后调用的方法,根据identifier来判断点击的哪个按钮
    NSString *apsContent = [response.notification.request.content.userInfo objectForKey:@"type"];
    NSLog(@"didReceiveNotificationResponse:%@",response.notification.request.content.title);
    NSLog(@"%@",apsContent);
}

4、在viewController中编写点击事件


#import "FSAppIconManager.h"
#import <UserNotifications/UserNotifications.h>

@interface ViewController () <UNUserNotificationCenterDelegate>

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    NSString *name = [FSAppIconManager getCurrentAppIconName];
    NSLog(@"name: %@", name);
}

- (IBAction)changeAppIcon:(id)sender {
    BOOL canChangeAppIcon = [FSAppIconManager canChangeAppIcon];
    NSLog(@"canChangeAppIcon value: %@", canChangeAppIcon?@"YES":@"NO");
    if (!canChangeAppIcon) {
        return;
    }
    NSString *name = [FSAppIconManager getCurrentAppIconName];
    NSString *changeName = @"male";
    if ([name isEqualToString:@"male"]) {
        changeName = @"female";
    }
    [FSAppIconManager changeAppIconWithIconName:changeName completionHandler:^(NSError * _Nullable error) {
        NSLog(@"error: %@", error);
    }];
}

- (IBAction)sendLocalPush:(UIButton *)sender {
    //8s后提醒
//    UNTimeIntervalNotificationTrigger *trigger1 = [UNTimeIntervalNotificationTrigger triggerWithTimeInterval:8 repeats:NO];
    
    //每周一早上 8:00 提醒我给起床
//    NSDateComponents *components = [[NSDateComponents alloc] init];
//    components.weekday = 2;
//    components.hour = 8;
//    UNCalendarNotificationTrigger *trigger3 = [UNCalendarNotificationTrigger triggerWithDateMatchingComponents:components repeats:YES];
//
//    //需导入定位库   #import <CoreLocation/CoreLocation.h>
//    //一到距离(123.333, 123.344)点20米就喊我下车
//    CLRegion *region = [[CLRegion alloc] initCircularRegionWithCenter:CLLocationCoordinate2DMake(123.333, 123.344) radius:20 identifier:@"regionidentifier"];
//
//    UNLocationNotificationTrigger *trigger4 = [UNLocationNotificationTrigger triggerWithRegion:region repeats:NO];
    
    if (@available(iOS 10.0, *)) {
        UNMutableNotificationContent *content = [[UNMutableNotificationContent alloc] init];
        content.title = @"this is Notifications";
        content.subtitle = @"本地通知";
        content.body = @"推送一条本地通知";
        content.badge = @1;
        content.userInfo = @{@"type":@"this is a userNotification"};
        //每小时重复 1 次喊我喝水
        UNTimeIntervalNotificationTrigger *trigger2 = [UNTimeIntervalNotificationTrigger triggerWithTimeInterval:60 repeats:YES];
        NSString *requestIdentifier = @"sampleRequest";
        UNNotificationRequest *request = [UNNotificationRequest requestWithIdentifier:requestIdentifier content:content trigger:trigger2];
        UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
        [center addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) {
            if (error) {
                NSLog(@"本地消息推送失败:%@", error);
            }
        }];
    } else {
        // Fallback on earlier versions
    }
}

相关文章

  • 动态改变图标

    一、开始的启蒙 开始想到做这个功能,也是在早上坐公交车上班的时候翻阅技术公众号看到的,抽空就自己实现了一下。 二、...

  • 安卓初涉猎小记录

    一 动态改变手机App图标https://github.com/leolin310148/ShortcutBadg...

  • Android 动态改变app图标

    动态改变app图标 代码实现如下: 我们先来简单的分析一下上面的代码: 这两个属性是用来设置图标和标签 别名的na...

  • 移动客户端开发笔记4

    iOS 10.3开始可以动态改变app图标 浅谈iOS视频播放的N种解决方案 【React Native】从源码一...

  • ionic动态更改App主屏幕图标插件

    ionic动态更改App主图标效果 支持iOS 安卓动态更改App图标,需要预先配置。 可查看GitHub:htt...

  • iOS10.3:动态改变APP图标

    分享是每个优秀的程序员所必备的品质 iOS 10.3 新增了更换应用图标的功能。开发者提供多个图标的选择,用户可以...

  • 2018-02-25 动态更换图标:activity-alias

    动态更换图标 首先先解决下实际问题。动态更换图标。android可以根据activity-alias来设置桌面可以...

  • 动态图集存在的意义

    LOL选择英雄界面和符文界面,可能会存在动态图标,动态图标也就是选之前没人知道选什么,这样我们很多小图标没办法打图...

  • 动态图标&

    动态图表 一、双坐标图表 选中区域--插入--推荐图表--所以图表--组合图--同比--添加数据标签--美化...

  • 动态图标

    https://mp.weixin.qq.com/s/AL6DTPqzvW1QnH_Xjs_b1w

网友评论

      本文标题:动态改变图标

      本文链接:https://www.haomeiwen.com/subject/ccxplqtx.html