iOS10通知(五)--本地實現多媒體通知
iOS 10 中,開發者現在可以在通知中嵌入圖片、音樂或者視訊。
為本地通知新增多媒體內容十分簡單,只需要通過檔案的NSURL建立一個 UNNotificationAttachment 物件,然後將這個物件放到陣列中賦值給 content 的 attachments 屬性就行了
如果需要實現遠端的多媒體通知,那就要用到下篇中的通知拓展,具體操作在下篇介紹,本片只介紹本地多媒體通知
多媒體通知附件的檔案大小限制
1、本地多媒體通知的關鍵程式碼段實現
-(void)btnClicked { UNMutableNotificationContent *content = [[UNMutableNotificationContent alloc]init]; content.title = @"多媒體通知"; content.body = @"顯示一個圖片"; //需要顯示多個圖片就需要用到後面介紹的自定義的UI NSString *imageUrlStr = @"http://172.20.90.117/www2/img/r8.jpg"; [self downloadAndSave:[[NSURL alloc] initWithString:imageUrlStr] handler:^(NSURL *localUrl) { UNNotificationAttachment *attachment = [UNNotificationAttachment attachmentWithIdentifier:@"attachment" URL:localUrl options:nil error:nil]; content.attachments = @[attachment]; UNTimeIntervalNotificationTrigger *trigger = [UNTimeIntervalNotificationTrigger triggerWithTimeInterval:5 repeats:NO]; NSString *identifier = @"media"; UNNotificationRequest *request = [UNNotificationRequest requestWithIdentifier:identifier content:content trigger:trigger]; [[UNUserNotificationCenter currentNotificationCenter] addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) { // }]; }]; } -(void)downloadAndSave:(NSURL *)url handler: (void (^)(NSURL *localUrl)) handler { NSURLRequest *request = [NSURLRequest requestWithURL:url]; NSURLSession *session = [NSURLSession sharedSession]; NSURLSessionDownloadTask *task = [session downloadTaskWithRequest:request completionHandler:^(NSURL * _Nullable location, NSURLResponse * _Nullable response, NSError * _Nullable error) { // location是沙盒中臨時目錄下的一個url,檔案下載後會存到這個位置, //由於臨時目錄中的檔案隨時可能被刪除,建議自己把下載的檔案挪到需要的地方 NSString *path = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:response.suggestedFilename]; [[NSFileManager defaultManager] moveItemAtURL:location toURL:[NSURL fileURLWithPath:path] error:nil]; handler([NSURL fileURLWithPath:path]); }]; [task resume]; }
2、更換url地址之後可以實現圖片、音樂和視訊的傳送,效果圖如下
相關推薦
iOS10通知(五)--本地實現多媒體通知
iOS 10 中,開發者現在可以在通知中嵌入圖片、音樂或者視訊。 為本地通知新增多媒體內容十分簡單,只需要通過檔案的NSURL建立一個 UNNotificationAttachment 物件,然後將這個物件放到陣列中賦值給 content 的 attachments 屬性就
SwiftUI - iOS10本地推送通知教程UserNotifications在Swift中的實現方式
## 簡介 訊息推送相信在很多人的眼裡都不陌生了吧?像即時聊天微信,好友發信息給你時會在頂部彈下小視窗提醒你。也像是在影院APP預訂了電影票,在開場前一小時你也會收到提醒。這類推送是需要經過後端傳送請求的,需要伺服器傳送推送請求,又或者使用如極光推送等第三方渠道。 那麼如果我們的APP不需要連網呢?這是不
Java多執行緒學習筆記(五) 使用Condition實現等待/通知
使用Condition實現等待/通知 1. 使用Condition 1.1 MyService 1.2 ThreadA 1.3 Test 1.4 執行結果 1.5 方法對比 2. 使用多個Condition實
Android實現本地推送通知的解決方案
廢話不多說,直接進入正題. 一、自己寫程式碼建立通知,可以參考以下程式碼: NotificationManager nm=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); Stri
Android手機多媒體——通知
t對象 from .get 延時 pict 數組 標題 nts iss 一 創建手機通知 1.創建一個NotificationManager 創建一個NotificationManager來對通知就行管理。一般調用context的getSystemService()方法得到
模態框實現下線通知
<template> <div id="kickPage" v-show="mainKicked"> <div class="kickModal"> <div class="kickHead"&g
[Xcode10 實際操作]七、檔案與資料-(6 )通過通知中心,實現監聽和處理程式退出事件的功能
本文將演示通過通知中心,實現監聽和處理程式退出事件的功能。在專案導航區,開啟檢視控制器的程式碼檔案【ViewController.swift】 1 import UIKit 2 3 class ViewController: UIViewController { 4 5
[Xcode10 實際操作]七、文件與數據-(6 )通過通知中心,實現監聽和處理程序退出事件的功能
英雄 idl ide active xcod end 控制 .sh Once 本文將演示通過通知中心,實現監聽和處理程序退出事件的功能。在項目導航區,打開視圖控制器的代碼文件【ViewController.swift】 1 import UIKit 2 3
Zookeeper學習筆記五之監控與通知
監控與通知 Zookeeper通常以遠端服務的方式被訪問,如果每次訪問znode時,客戶端都需要獲得節點中的內容。這樣的代價就非常大。因為這樣會導致更高的延遲,而且Zookeeper需要做更多的操作,例如下圖中,第二次呼叫getChildren /tasks返回了相同的值,
Zabbix 如何實現郵件報警通知以及免費簡訊報警通知
前提條件:(1) zabbix伺服器端已經成功安裝並且執行。(2) zabbix客戶端已經成功建立並且執行。1 下載並且安裝msmtp軟體tar jxvf msmtp-1.4.32.tar.bz2cd msmtp-1.4.32./configure--prefix=/usr/
AlarmManager+Notification實現定時通知提醒功能
AlarmManager簡介 AlarmManager實質是一個全域性的定時器,是Android中常用的一種系統級別的提示服務,在指定時間或週期性啟動其它元件(包括Activity,Service,BroadcastReceiver)。本文將講解一下如何使
HTML5 Notification實現瀏覽器通知
需求需要實現當瀏覽器最小化時,如果有新通知,實現瀏覽器閃爍,或者實在不行在瀏覽器標題欄閃爍(這個似乎相當於沒有通知。。)。基於技術研究的目的,在網路上查詢有沒有相關實現方式,發現,大多不是真正的實現工作列閃爍,似乎純js無法實現,還需要win32底層API的支援。。。無奈轉而研究能不能折中通過彈
前端js實現桌面通知
前端js實現桌面通知 前端js實現桌面通知,思路是呼叫Notification物件,先檢測使用者是否授權桌面顯示,若授權則進行顯示,若不授權則不顯示。 在Notification物件中常用的屬性有title(桌面通知標題)、body(桌面通知的主體內容,注意不對
Redis實現訂閱通知
釋出訂閱功能是一個普遍的需求,訊息佇列也可以進行該功能的實現,這裡展示redis怎麼實現訂閱通知。 1.建立一個任務池 /** 任務池 **/ @Bean public ThreadPoolTaskScheduler initTaskScheduler() { ThreadPoolT
AspectJ 基於註解的實現各種通知
介面 package com.hk.spring.annotation; public interface ISomeService { public void doFirst(); public void doSecond();
用 Houston 在本地除錯遠端通知
Houston 的背景 Houston 在 GitHub 上的地址:https://github.com/nomad/Houston,作者又是Mattt Thompson,簡直是慘無人道啊,又高產,又有質量 Houston 能讓我們在本地、甚至終端很方便的除
基於代理類ProxyFactoryBean的AOP實現---前置通知編碼實現
程式碼: 1.配置檔案 applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="
奔五的人學iOS:通知所有介面更新
好久沒寫東西了,今天來留個筆記。 畢竟沒能全面瞭解iOS的工作機制,匆忙用工程來練手,有些比較簡單的問題,解決起來還是走了些彎路。 在我的工程中,有後臺工作的程式碼,後臺工作完成後需要通知前臺所有頁面重新整理,最初我使用自定義的protocol來處理,理論上是可行的,我將所
iOS本地通知或者本地推送的使用
遠端推送基本都沒啥問題,按規範來走,證書做好給伺服器,本地載入上證書基本都是可以實現的。 本地通知就需要自己建立通知,傳送通知,比遠端多了這兩步,一般的會有幾個需要注意的地方: 1,iOS8-iOS10是一套發通知方法,10以後是一套方法; 2,通知可能不顯示,可能會覆
網路程式設計(52)—— Windows下使用WSAEventSelect實現非同步通知IO
一、同步IO和非同步IO 同步IO是指發生IO事件的時間點和相關函式返回的時間點一致。如使用send函式傳送資料時,所有的資料傳送到輸出緩衝區後,send函式才會返回,這種IO方式就是同步IO。非同步IO指函式先於IO事件返回。還是以send函式為例,呼叫s