Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >AppleWatch开发入门七——watchOS中通知的应用

AppleWatch开发入门七——watchOS中通知的应用

作者头像
珲少
发布于 2018-08-15 10:15:02
发布于 2018-08-15 10:15:02
1.5K00
代码可运行
举报
文章被收录于专栏:一“技”之长一“技”之长
运行总次数:0
代码可运行

AppleWatch开发入门七——watchOS中通知的应用

一、引言

        在iOS系统中,支持的通知有两种类型:本地通知和远程通知。本地通知多用于计时类通知,远程的又称推送,多用于一些提示动态的提示信息。这里有相关通知的一些知识总结:

本地推送:http://my.oschina.net/u/2340880/blog/405491

远程推送:http://my.oschina.net/u/2340880/blog/413584

        在watch中,通知是和iphone同步的,在iphone上的App收到通知的同时,会默认也推送到watch上,基于watch的穿戴性,对用户来说,它上面的通知信息将比iphone更加及时。

二、WatchOS通知概览

        首先,watch上的通知分为两部分:short-look和long-lock。简而言之,short-look,可以理解为一个简单的通知预览,它会将通知发起的APP和主要标题等信息展示给你,让你一目了然,当用户抬起手腕,查看这个通知一定时间,这个短通知就会转换为long-look通知。short-look的通知界面我们不能够自定义,系统为我们设计好了模样,如下:

长通知的界面我们是可以进行一定程度上的自定义的,并且可以添加按钮等逻辑操作。

        long-look也分为两种界面,静态界面和动态界面。这个也好理解,静态界面是我们在写程序时就定义好的界面,在通知发送到watch上时,界面会自动匹配通知内容进行显示。动态的界面则是当收到通知时,会先执行我们相应的配置代码,之后在进行通知界面的展示。一个long-look界面大致如下:

在long-lock中,界面定义为三个部分,头部标题栏,自定义视图栏和按钮交互区。头部的标题栏我们不能自定义,它是一个半透明的上面有App图标和名字的横栏。其下面是我们可以自定义的区域,我们可以在storyBoard中拉入文本和图片。最下面是一些交互按钮,其名称等配置信息在推送的文件中定义。

三、如何在模拟器上模拟远程推送

        在watchOS模拟器上,Xcode为我们准备好了一种可以模拟测试推送的方式。如果我们创建项目时,选择了NotifacationScene,则Xcode会默认为我们创建一个apns文件:

这个文件就是模拟推送的相关配置文件,如果没有,我们也可以手动来创建:

文件中的内容格式如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
    "aps": {
        "alert": {
            "body": "通知",
            "title": "通知来了"
        },
        "category": "myCategory"
    },
    
    "WatchKit Simulator Actions": [
        {
            "title": "First Button",
            "identifier": "firstButtonAction"
                                   
        }
    ],
    
    "customKey": "Use this file to define a testing payload for your notifications. The aps dictionary specifies the category, alert text and title. The WatchKit Simulator Actions array can provide info for one or more action buttons in addition to the standard Dismiss button. Any other top level keys are custom payload. If you have multiple such JSON files in your project, you'll be able to select them when choosing to debug the notification interface of your Watch App."
}

这是一些json格式的数据,其中alert是对推送内容的设置,body会显示在long-look的标题栏,title会显示在short-look的标题栏,Actions数组中是对按钮就行配置,每一个按钮可以设置一个标题和id,标题用于在推送界面显示,id用于处理点击按钮后触发的逻辑。

创建好这个,我们可以来试着测试一下推送的界面,选择推送工程,运行即可:

四、long-look的静态界面和动态界面

        上面提到过,long-look分为静态界面和动态界面两种,当我们在storyBoard中拉入一个Notification Interface Controller的时候,可以选择同时创建动态界面,勾选 Has Dynamic Interface:

这时,在storyBoard中是如下模样:

我们在创建一个文件,继承于WKUserNotificationInterfaceController,并将storyBoard中动态的的推送controller的class设置为我们创建的类:

注意,这里设置的是动态的Interface,也就是上面右边的controller。之后运行,你会发现效果并没有什么改变,那是因为系统默认会从静态界面加载推送界面,我们需要在NotifacationController代码中做一些操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//在NotificationController中重写下面两个方法
//这个用于本地推送
override func didReceiveLocalNotification(localNotification: UILocalNotification, withCompletion completionHandler: ((WKUserNotificationInterfaceType) -> Void)) {
        //在这里做一些动态界面的加载操作,比如可以根据推送的数据 设置图片 文字等
        
        //下面这个方法决定是加载静态的界面还是动态的界面
        //Custom是加载动态界面
        //default是加载静态界面
        completionHandler(.Custom)
    }
    
    
//设个用于远程推送    和上面方法类似
override func didReceiveRemoteNotification(remoteNotification: [NSObject : AnyObject], withCompletion completionHandler: ((WKUserNotificationInterfaceType) -> Void)) {
       
        completionHandler(.Custom)
    }

五、触发推送点击事件

        首先,我们多配置几个点击按钮,在apns文件中如下配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"WatchKit Simulator Actions": [
                                   {
                                   "title": "第一",
                                   "identifier": "one"
                                   
                                   },
                                   {
                                   "title": "第二",
                                   "identifier": "two"
                                   
                                   },
                                   {
                                   "title": "第三",
                                   "identifier": "three"
                                   
                                   }
                                   ],

在我们watch App的InterfaceController中实现如下的方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//重写下面两个方法来响应点击事件
//远程推送的方法
override func handleActionWithIdentifier(identifier: String?, forRemoteNotification remoteNotification: [NSObject : AnyObject]) {
        //通过我们配置的按钮id来区分点击的按钮 处理响应的逻辑
        print(identifier)
    }
//本地推送的方法
override func handleActionWithIdentifier(identifier: String?, forLocalNotification localNotification: UILocalNotification) {
        
    }

专注技术,热爱生活,交流技术,也做朋友。 ——珲少 QQ群:203317592

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015/10/19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
iWatch开发:WatchOS 消息推送教程
在watch 中,通知是和iPhone 同步的,在iPhone上的APP收到通知的同事,也会默认推送到iWatch 上,基于watch 的穿戴性,对用户来说,它上面的通知信息将比iPhone更及时。
HelloWorld杰少
2022/08/03
1.4K0
iWatch开发:WatchOS 消息推送教程
iOS10通知框架UserNotification理解与应用
        关于通知,无论与远程Push还是本地通知,以往的iOS系统暴漏给开发者的接口都是十分有限的,开发者只能对标题和内容进行简单的定义,至于UI展示和用户交互行为相关的部分,开发者开发起来都十分困难。至于本地通知,iOS10之前采用的是UILocationNotification类,远程通知有苹果服务器进行转发,本地通知和远程通知其回调的处理都是通过AppDelegate中的几个回调方法来完成。iOS10系统中,通知功能的增强是一大优化之处,iOS10中将通知功能整合成了一个框架UserNotification,其结构十分类似于iOS8中的UIWebView向WebKit框架整合的思路。并且UserNotification相比之前的通知功能更加强大,主要表现在如下几点:
珲少
2018/08/15
2K0
iOS10通知框架UserNotification理解与应用
ios入门之消息推送
前言 在去年的苹果大会上,苹果带来的iOS 10 系统中将之前繁杂的推送通知统一成UserNotifications.framework 来集中管理和使用通知功能,还增加一些实用的功能——撤回单条通知、更新已展示通知、中途修改通知内容、在通知中显示多媒体资源、自定义UI等功能。 那么在ios10之前,ios的消息推送是怎么分类的呢? ios 10之前 在ios之前,iOS推送分为Local Notifications(本地推送) 和 Remote Notifications(远程推送)。 本地推送 不需
xiangzhihong
2018/02/06
2K0
ios入门之消息推送
推送-iOS本地通知
从 iOS 10 新增的 UserNotifications Framework 可以发现,Apple 整合了原有散乱的 API,并且增加了许多强大的功能。以 Apple 官方的角度来看,也必然是相当重视推送服务对 App 的影响、以及对 Apple iOS 生态圈长远发展的影响。
進无尽
2018/09/12
7.6K1
推送-iOS本地通知
iOS开发--本地通知与远程通知
1、NSNotification是系统内部发出通知,一般用于内部事件的监听,或者状态的改变等等,是不可见的 2、本地通知与远程通知是可见的,主要用于告知用户或者发送一些App的内容更新,推送一些相关的消息,让用户知道App内部发生了什么事情。
孙寅
2020/06/02
3.4K0
iOS 本地推送概念步骤:属性:点击通知跳到指定控制器界面快捷回复功能(iOS 8以后可用), category 属性的使用方法
概念 1.推送通知有5种不同的呈现效果 在屏幕顶部显示一块横幅(显示具体内容) 在屏幕中间弹出一个UIAlertView(显示具体内容) 在锁屏界面显示一块横幅(锁屏状态下,显示具体内容) 更新app图标的数字(说明新内容的数量) 播放音效(提醒作用) 2.用户也可以决定是否要开启以下4个功能: 显示App图标数字 播放音效 锁屏显示 显示在“通知中心” 3、注意: 发送推送通知时,如果程序正在前台执行,那么推送通知就不会被呈现出来,但是微信在前台的时候也能推送消息,方法是:创建一个view,仿造系统消息通
用户2141756
2018/05/18
2.7K0
你想知道的 Watch App 开发
你创建的 Apple Watch 工程由两个相关的 bundle 组成:一个 Watch app bundle 和 一个WatchKit extension bundle。Watch app bundle 里面包含了 storyboards 以及一系列与你的app 界面相关的资源文件。WatchKit extension bundle 位于 Watch app bundle 内,包含用于管理这些界面和响应用户互动的代码。这两个包统称为 Watch app。你发布的 Watch app 存在于你的iOS 应用程序中,iOS app 会将watch app 的应用程序复制到用户的Apple Watch中,然后在本地运行。
HelloWorld杰少
2022/08/03
1K0
iOS 10 消息推送(UserNotifications)秘籍总结
单独整理消息通知的内容,但是因为工(就)作(是)的(很)事(懒)没有更新文章,违背了自己的学习的初衷。因为互联网一定要有危机意识,说不定眼一睁,我们就欧了 。
java爱好者
2019/06/19
2.8K0
iOS14开发- 通知
远程通知是指在联网的情况下,由远程服务器推送给客户端的通知,又称 APNs(Apple Push Notification Services)。在联网状态下,所有设备都会与 Apple 服务器建立长连接,因此不管应用是打开还是关闭的情况,都能接收到服务器推送的远程通知。
YungFan
2021/11/24
1.8K0
iOS14开发- 通知
iOS 点击推送消息跳转指定界面 —总结篇app 在后台app被杀死
收到推送的准备: 首先至于说消息推送的原理,证书配置等等这些我在这里就不在累述,有很多写的很好的文章相信您已经可以搞定这块,这里我重点讲下各种情况下的跳转处理。 点击推送触发的几个方法: ios7.0之前 - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{ // App 收到推送的通知 NSLog(@"********** ios7.
陈雨尘
2018/06/07
8.6K1
iWatchk开发:创建一个简单的Apple watch应用
在上篇文章中,我系统的介绍了一下 iWatch 的功能,相信大家对iWatch开发 也有了一个系统的认识。
HelloWorld杰少
2022/08/03
2.1K0
iWatchk开发:创建一个简单的Apple watch应用
iOS 推送(本地推送)推送介绍总结使用步骤其他常用API
而在编程中,看过不如敲过,敲过不如理解,而很多代码的精髓要义,都是在我们写过很多遍之后就自然而然的理解了。
Haley_Wong
2018/08/22
1.7K0
iOS 推送(本地推送)推送介绍总结使用步骤其他常用API
iOS 推送手机消息背后的技术
作者:allenzzhao,腾讯  IEG运营开发工程师 消息推送我们几乎每天都会用到,但你知道iOS中的消息推送是如何实现的吗?本文将从推送权限申请,到本地和远程消息推送,再到App对推送消息的处理等多个步骤,详细介绍iOS中消息推送的工作流程。 1、概述 消息推送是一种App向用户传递信息的重要方式,无论App是否正在运行,只要用户打开了通知权限就能够收到推送消息。开发者通过调用iOS系统方法就可以发起本地消息推送,例如我们最常见的闹钟应用,App能够根据本地存储的闹钟信息直接发起本地通知,因此即
腾讯技术工程官方号
2020/10/27
4.1K1
iOS 10前后两种本地通知
远程通知是指服务器发出的通知,通过苹果的推送然后到达用户设备。本地通知是指不通过网络,直接安装应用后就可以接到通知了,典型的例子是日历、待办、闹钟等应用。
Cloudox
2021/11/23
1.2K0
iOS 10前后两种本地通知
iOS15适配本地通知功能及语音播报探索
一年一度的iOS 系统 API适配来了,9 月 14 日起 App Store Connect 已经开放 iOS 15 和 iPadOS 15 App 的提交,同时苹果宣布自 2022 年 4 月起,所有提交至 App Store 的 iOS 和 iPadOS app 都必须使用 Xcode 13 和 iOS 15 SDK 构建。
玖柒的小窝
2021/11/05
3.6K1
iOS15适配本地通知功能及语音播报探索
WatchKit 编程入门
AppleWatch 是由苹果公司创造的智能手表,TimCook 于 2014 年 9月9日在苹果公司官方发布会上宣布了这一消息。AppleWatch 是继 iPhone 和 iPad 之后苹果公司的又一力作,苹果公司希望借此改变可穿戴设备的规则(就像 iPhone 改变了智能手机,iPad 改变了平板一样)。
博文视点Broadview
2020/06/11
1.9K0
iOS 闹钟的实现
iOS的机制是一旦程序处于后台,那么程序就处于暂停状态,这也是iOS系统后台开很多应用依旧流畅的原因,因为这个机制,所以类似闹钟这样的应用就不能用定时器实现 那么我们要怎样实现定时提醒的功能呢
码客说
2019/10/22
3.6K0
iOS Push详述,了解一下?
本文主要对iOS Push的在线push、本地push及离线(远程)push进行梳理,介绍了相关逻辑,测试时要注意的要点以及相关工具。
WeTest质量开放平台团队
2018/04/27
4.5K9
iOS Push详述,了解一下?
了解iOS消息推送一文就够:史上最全iOS Push技术详解
1)在线Push:比如QQ、微信等IM界面处于前台时,聊天消息和指令都会通过IM自建的网络长连接通道推送过来,这种Push在本文中暂且称为“在线Push”;
JackJiang
2018/08/29
24.4K1
推送-远程通知推送教程
本文翻译自:raywenderlich.com,原文作者:Jack Wu,译者:JMStack
進无尽
2018/09/12
4.2K0
推送-远程通知推送教程
相关推荐
iWatch开发:WatchOS 消息推送教程
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验