1. 程式人生 > >iOS10通知(五)--本地實現多媒體通知

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