OC ShortCut 项目实战

本文介绍了iOS 9的shortcut功能,包括其创建、自定义和触发方式。重点讲述了如何在app后台和未启动状态下通过延迟处理优化场景,如设置全局变量适应不同启动场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、shortcut系统版本支持

shortcut是在iOS9推出的app快捷入口,基于长按app图标弹出快捷入口列表,可以自定义图标和文本,以及跳转方法。

二、shortcut实现

创建图标

// icons with my own images,icon size 35*35
    UIApplicationShortcutIcon *icon1 =  [UIApplicationShortcutIcon iconWithTemplateImageName:@"icon1"];

创建标识和方法名

 // create several (dynamic) shortcut items
    UIMutableApplicationShortcutItem *item1 = [[UIMutableApplicationShortcutItem alloc] initWithType:@"标识" localizedTitle:@"标题名" localizedSubtitle:@"" icon:icon1 userInfo:nil];

将定义好shortcut 填入容器中

[UIApplication sharedApplication].shortcutItems =@[item1];

触发shortcut的代理方法

- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler {
    // react to shortcut item selections
    NSLog(@"A shortcut item was pressed. It was %@.", shortcutItem.localizedTitle);

三、shortcut在不同场景下的场景优化

在rootVC 也就是在TabbarVC中添加通知,从rootvc接收通知的时候 加一个延时然后跳转到目标页面。如何设置延时秒是,那就得设置一个全局变量来显示app查是否从后台到前台的场景以及app重新启动的时候场景,app重新启动的话,延时要久一些,因为某些业务模块需要数据预加载才能跳转到相关页面。

场景一:app在后台

场景二:app未启动

### 实现 UniApp iOS 项目的应用快捷方式 (Shortcut) 在 UniApp 中为 iOS 应用添加快捷方式(Shortcuts),可以利用 `plus.runtime` 提供的相关接口来实现。具体来说,通过设置应用启动时携带特定参数,从而响应不同的快捷操作。 #### 创建 Shortcuts 为了创建并管理这些快捷方式,开发者需遵循苹果官方指南中的步骤: - **定义快捷项**:首先要在 Xcode 的项目配置文件中声明支持的动态或静态快捷动作。 - **注册快捷项**:当应用程序首次启动或者每次重新安装后都需要再次注册这些预设好的快捷选项[^1]。 ```javascript // 注册快捷方式示例代码 function registerShortCuts() { let shortcuts = [ { type: "com.example.app.shortcut1", title: "Action One" }, { type: "com.example.app.shortcut2", title: "Action Two" } ]; plus.runtime.setApplicationShortcuts(shortcuts, function () { console.log('Register success'); }, function (e) { console.error(`Failed to register with error:${JSON.stringify(e)}`); }); } ``` #### 处理 Shortcut 启动事件 对于由用户触发的快捷方式进行处理,则需要监听应用生命周期内的相应回调函数,并从中解析出传递过来的动作类型以及任何附加数据。 ```javascript document.addEventListener('plusready', function(){ // 监听来自快捷方式打开的应用程序 plus.runtime.launcher(function(data){ if (!data || !data.action) return; switch(data.action){ case 'com.example.app.shortcut1': handleActionOne(); break; case 'com.example.app.shortcut2': handleActionTwo(); break; default: console.warn('Unknown shortcut action.'); } }); }); ``` 需要注意的是,在某些情况下可能无法直接从 `plus.runtime.arguments` 获取 URL Scheme 协议参数,这可能是由于平台限制或其他原因造成的特殊行为。此时建议尝试其他替代方案,比如使用本地存储或者其他形式的数据传输机制来间接完成所需的功能逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值