iOS_远程推送(iOS10)_UNNotificationContentExtension

UNNotificationContentExtension简介

  • UNNotificationContentExtension这个类,也是iOS10推送的新特性,官方文档用这么一句话,简单的解释了一下,Presents a custom interface for a delivered local or remote notification.(当你收到远程或者本地通知的时候,弹出一个自定义界面)
  • 界面可以分为三大部分
    1. 顶部:App名称;
    2. 中部:上中下三个视图和一个自定义的View视图
    3. 底部:原本的推送标题、推送内容等

如何新建一个UNNotificationContentExtension

创建target

File->New->Target…

这里写图片描述

选择NotificationContentExtension按钮,然后进行程序的命名

这里写图片描述

最终会生成下图所示文件夹

这里写图片描述
- 看过UNNotificationServiceExtension的可以发现,两者的创建流程基本一致,无非生成的文件不同。

如何使用UNNotificationContentExtension

  • 下面介绍一下生成的四个文件

NotificationViewController文件

  • 看名字就知道这是一个继承UIViewController的控制器文件。
  • 在此文件内有两个方法:
    1. 对于- (void)viewDidLoad;就不多说了,基本都会用。
    2. 对于- (void)didReceiveNotification:(UNNotification *)notification;这个方法,内部有一行代码self.label.text = notification.request.content.body;从这行代码中我们可以看出,这是接收到通知时,进行的回调方法,在这个方法内,我们对页面效果进行修改和展示。
    3. 使用示例如下:
- (void)didReceiveNotification:(UNNotification *)notification {
    // 这个方法,可以给自己的控件赋值啊,调整frame啊等等,我在这里打印出来了通知的内容,供大家使用。
    NSDictionary *dict =  notification.request.content.userInfo;
    // 这里可以把打印的所有东西拿出来
    NSLog(@"%@",dict);

    /****************************打印的信息是************
    aps =     {
        alert = "This is some fancy message.";
        badge = 1;
        from = "hello word";
        imageAbsoluteString = "http://upload.univs.cn/2012/0104/1325645511371.jpg";
        "mutable-content" = 1;
        sound = default;
    };
}
    *******************************************/

}

简单介绍其遵守的协议<UNNotificationContentExtension>

- (void)didReceiveNotificationResponse:(UNNotificationResponse *)response completionHandler:(void (^)(UNNotificationContentExtensionResponseOption option))completion;
  • <UNNotificationContentExtension>中,有着这么一个枚举
typedef NS_ENUM(NSUInteger, UNNotificationContentExtensionMediaPlayPauseButtonType) {  
    // 没有播放按钮
    UNNotificationContentExtensionMediaPlayPauseButtonTypeNone,
    // 有播放按钮,点击播放之后,按钮依旧存在,类似音乐播放的开关
    UNNotificationContentExtensionMediaPlayPauseButtonTypeDefault,
    // 有播放按钮,点击后,播放按钮消失,再次点击暂停播放后,按钮恢复
    UNNotificationContentExtensionMediaPlayPauseButtonTypeOverlay,
}
  • <UNNotificationContentExtension>中,有以下几个属性
// 设置播放按钮的属性
@property (nonatomic, readonly, assign) UNNotificationContentExtensionMediaPlayPauseButtonType mediaPlayPauseButtonType;
// 设置播放按钮的frame
@property (nonatomic, readonly, assign) CGRect mediaPlayPauseButtonFrame;
// 设置播放按钮的颜色
@property (nonatomic, readonly, copy) UIColor *mediaPlayPauseButtonTintColor;
// 开始跟暂停播放
- (void)mediaPlay;
- (void)mediaPause;
  • 在这个协议内也有以下内容:
// 这两个方法只是会被单纯的调用,不会被监听到,因此,也不会在这两个方法内回调。
@interface NSExtensionContext (UNNotificationContentExtension)
// 控制播放
- (void)mediaPlayingStarted  
// 控制暂停
- (void)mediaPlayingPaused 
@end
  • 由于这些属性都是只读的,因此我们只能调用他们的get方法,来设置buttton的样式、大小、颜色

MainInterface.storyboard文件

  • 这就是个storyboard文件,系统在创建时就与NotificationViewController进行了绑定,便于开发者进行可视化编程,布局页面效果。

Info.plist文件

这里写图片描述

  • 从上面的截图,可以看出,主要有三个字段NSExtensionAttributes、NSExtensionMainStoryboard、NSExtensionPointIdentifier。

NSExtensionAttributes

  • 在这个字段内有UNNotificationExtensionCategory、UNNotificationExtensionInitialContentSizeRatio这两个字段。
UNNotificationExtensionCategory
  • 系统生成的是一个字符串类型的Value值,我们可以将其修改成数组类型,然后在内添加元素,示例如下图所示:
    这里写图片描述
  • 这里面的两个值是我随便写的,可以与后台商量,确定字段的值。
  • 在收到通知的时候,我们可以让后台把这个通知的categoryIdentifier带上,作用是,我们可以根据视频,音乐,图片,来分别自定义我们的通知内容。不同的分类标识符,也会在我们讲到UNNotificationAction的时候,帮助我们区分是什么类型的通知,方便我们对不同类型的通知做出不同的操作行为。
- (void)didReceiveNotification:(UNNotification *)notification {
// 不同的分类标识符
    NSString *categoryId = notification.request.content.categoryIdentifier;
}
UNNotificationExtensionInitialContentSizeRatio
  • 这个值的类型是一个浮点类型,代表的是高度与宽度的比值。系统会使用这个比值,作为初始化view的大小。举个简单的例子来说,如果该值为1,则该视图为正方形。如果为0.5,则代表高度是宽度的一半。

NSExtensionMainStoryboard

  • 系统默认生成的,用于绑定Storyboard和ViewController,可以进行修改,只要不嫌自己重新建一个麻烦。

NSExtensionPointIdentifier

  • 系统默认生成的,直接可以用,不用修改。

代码地址:
https://github.com/FlyingKuiKui/PushTestApp.git

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1024app_ios_2.3.4是一款专为iOS设备设计的应用程序,其版本号为2.3.4。该应用程序在功能上提供了丰富的内容和服务,可以满足用户在不同方面的需求。 1024app_ios_2.3.4首先具备了强大的应用市场功能,用户可以通过该应用程序方便地浏览和搜索各种类型的应用,包括游戏、社交媒体、工具类等。用户可以根据自己的兴趣和需求下载和安装这些应用,并在手机上进行使用。 其次,1024app_ios_2.3.4还提供了个性化荐功能,根据用户的使用习惯和喜好,荐适合用户的应用程序。这样,用户可以更加高效地发现和使用他们感兴趣的应用,提高了用户体验。 另外,1024app_ios_2.3.4还支持应用的更新和升级。用户可以在应用程序中获得关于已安装应用的最新版本信息,并进行更新。这样,用户可以及时获得应用程序的最新功能和修复bug,提高了应用的稳定性和安全性。 最后,1024app_ios_2.3.4还具备了一些额外的功能,例如用户可以在应用中进行应用评分和评论,与其他用户交流和分享使用心得。此外,用户还可以通过该应用程序获取关于应用的详细信息,如应用的大小、开发者介绍等。 综上所述,1024app_ios_2.3.4是一款功能强大的iOS应用程序,用户可以在其中浏览和下载各种类型的应用,享受个性化荐、应用更新和升级等服务。同时,用户还可以与其他用户互动交流,获取应用的详细信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值