1. 程式人生 > >iOS後臺下載圖片並實現本地通知(Swift)

iOS後臺下載圖片並實現本地通知(Swift)

有的時候我們需要APP進入後臺後能夠自動下載更新一些東西所以這裡就說下iOS程式的後臺下載任務,前面的部落格說過要想進行後臺任務就要在plist檔案中進行註冊,這裡註冊Required background modes選項,值是App downloads content from the network。當然了你如果不想註冊還有個方法就是在Capabilities選項欄下開啟Background Modes選項卡並且勾選後臺獲取Background fetch。
關於後臺任務我們主要是在AppDelegate的幾個代理方法中進行的,首先在

func applicationDidEnterBackground(application: UIApplication
)

APP進入後臺方法中我們要設定最小的後臺獲取時間間隔,這裡我們設定最小的時間間隔

 func applicationDidEnterBackground(application: UIApplication) {
       //後臺獲取資料的時間,我們設定為最短時間
        application.setMinimumBackgroundFetchInterval(UIApplicationBackgroundFetchIntervalMinimum)

    }

然後我們在另外一個代理方法中func application(application: UIApplication, performFetchWithCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void)

執行獲取方法中真正的實現後臺下載任務

 //後臺獲取資料
    func application(application: UIApplication, performFetchWithCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
         let url = NSURL(string: "http://img02.tooopen.com/images/20160525/tooopen_sl_163301938812.jpg")
        let task = NSURLSession
.sharedSession().dataTaskWithURL(url!) { (data, respones, error) in if error != nil { //通知後臺獲取資料失敗 completionHandler(.Failed) self.sendLocationNotification("下載失敗"+error!.description) }else { dispatch_async(dispatch_get_main_queue(), { let controller = self.window!.rootViewController as! ViewController if data != nil { let imageload = UIImage(data: data!) controller.imageView?.image = imageload //通知獲取資料成功 completionHandler(.NewData) //發本地推送 self.sendLocationNotification("下載成功") } }) } } task.resume() }

當我們執行獲取方法完成後無論是否成功都要給後臺任務一個接過通知,這裡成功通知資料更新了completionHandler(.NewData) 失敗直接通知失敗了 completionHandler(.Failed) 並且無論下載成功或者失敗我們都會發送一個本地通知

 func sendLocationNotification(message:String) {
        //建立通知
        let notification = UILocalNotification()
        //推送訊息
        notification.alertBody = message
        //推送時間
        notification.fireDate = NSDate()
        //角標
        notification.applicationIconBadgeNumber = 1
        //新增本地推送
        UIApplication.sharedApplication().scheduleLocalNotification(notification)

    }

當我們點選推送進入前臺後要取消推送清除角標

 func applicationDidEnterBackground(application: UIApplication) {
       //後臺獲取資料的時間,我們設定為最短時間
        application.setMinimumBackgroundFetchInterval(UIApplicationBackgroundFetchIntervalMinimum)

    }

相關推薦

iOS後臺下載圖片實現本地通知(Swift)

有的時候我們需要APP進入後臺後能夠自動下載更新一些東西所以這裡就說下iOS程式的後臺下載任務,前面的部落格說過要想進行後臺任務就要在plist檔案中進行註冊,這裡註冊Required background modes選項,值是App downloads con

Python下載圖片儲存本地的兩種方式

一:使用Python中的urllib類中的urlretrieve()函式,直接從網上下載資源到本地,具體程式碼:import os,stat import urllib.request img_url="https://timgsa.baidu.com/timg?imag

IOS開發之非同步載入網路圖片快取本地實現瀑布流(一)

</pre><pre name="code" class="objc"></pre><pre name="code" class="objc">在前面的一篇部落格中,我寫了一個瀑布流照片牆的程式,由於之前的程式載入的圖片是本

android後臺動態建立圖片實現微信分享

今天就記錄一下。 先說明一下,之前沒有做過類似的東西,百度了一兩天才知道,說來很慚愧、有點笨,只能這樣說。 在我的腦裡只明白,如果要動態建立圖片: 一、就是new 嘛 二、就是LayoutInflater.from()這種。 而微信分享圖片到朋友圈,這種不可能new text

【內附PDF資料】Python實現下載圖片生產PDF檔案

                                         

Android實現下載圖片儲存到SD卡中

在檔案裡設定一個點選方法已進行點選下載: download.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String

httpclient+asynctask下載圖片儲存在本地

1、httpclient過時, 在Android studio中可以這樣設定再使用: useLibrary 'org.apache.http.legacy' 2、許可權: <!--許可權--> <use

3種上傳圖片實現預覽的方法

load app chunks isp 賦值 response with span attr 在常見的用戶註冊頁面,需要用戶在本地選擇一張圖片作為頭像,並同時預覽。 常見的思路有兩種:一是將圖片上傳至服務器的臨時文件夾中,並返回該圖片的url,然後渲染在html頁面;另一種

利用scrapy下載圖片儲存到本地

1.先宣告一下,起始位置已經是將所有的圖片連結都能到pipelines.py中 2.建立一個類,繼承於ImagesPipeline,因此也就需要匯入ImagesPipeline from scrapy.pipelines.images import ImagesPipeline 3.由於繼承自

Node.js 從網頁下載圖片替換為新地址

平常經常需要儲存網頁上的圖片,如果一張一張地儲存會非常麻煩和浪費時間,為了解決這個問題,我寫了一個node.js的指令碼,可以直接用node命令就可以把網頁裡的圖片下載到本地,另外還可以擴充套件為下載其他資源,如css、js、video等。 var data = ` <!DOC

從網路中下載圖片進行顯示

通過get請求方式獲取網路圖片----主要是方便以後查閱以及做一個筆記 任務要求: 1.新建一個佈局檔案,在佈局檔案中新增Button、ImageView兩個控制元件 2.新建一個GetPictThread實現Runnable介面   (1)定義一個handler用於

使用Retrofit+RxJava下載檔案實現APP更新

後臺介面 這次就不能再像上一年那樣通過一個txt檔案來儲存apk資訊了,我們要做的就是請後臺吃頓飯,寫一下以下介面 上傳介面putApk 這個介面用於方便我們上傳新版本,可暫時配合postman使用 獲取apk介面 getApk 我們通過當前版本號和versio

PHP高效下載圖片儲存到本地

 PHP如何怎麼樣高效下載圖片儲存到本地? 直接上程式碼: /** * 下載圖片,儲存到本地檔案 * * @param string $url * @param string $saveFi

input file 方式上傳圖片實現實時預覽

用普通的html的 <input type="file"/> 標籤是不能實現實時預覽功能的,獲取表單的值可以得到圖片所在路徑:C:\fakepath\test.png,如果將它直接賦值給img標籤的href屬性,會報錯:Not allowed to load lo

[unity3d]unity中打包成.unity3d格式實現本地加載出來

1.首先我們把這段程式碼拷貝下來,放進工程,不要託給任何物體,就放在那不要理它。 using UnityEngine; using UnityEditor; public class ExportAssetBundles { [MenuItem("Export/B

iOS開發之圖片壓縮實現

使用下面兩個方法,先按尺寸重繪圖片,然後再降低品質上傳圖片data #pragma mark 裁剪照片 -(UIImage *)scaleToSize:(UIImage *)image size:(CGSize)size { //建立一個bitmap的context //

java 根據url下載圖片儲存到本地

 import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.net.URL; import java.net.URLConnec

解決使用jquery上傳圖片實現回顯失敗,提示ReferenceError: $ is not defined

使用jquery上傳圖片並實現回顯 <scripttype="text/javascript"> //上傳 (非同步) functionuploadPic(){ //本次 jquery.form.js varoptions = {             

鬧鐘功能實現+本地通知+音訊播放

問題描述:通過picker設定時間,到了設定好的時間鬧鐘響起,並彈出提示框,點選確定,停止播放音訊。如果設定好了鬧鐘,沒有停在該頁面,而是返回了手機主螢幕或是手機鎖屏,當到了鬧鐘設定的時間,會彈出訊息通知。(如果設定的時間是已經過去的時間,頁面不會有響應,直到設定正確的時間

httpclient4下載圖片 java實現

有時候需要從網上抓取一下圖片jpg、png等,也可以抓取zip等,這樣就需要寫程式才能達到想要的效果, 下面是用httpclient4做一個工具類,非常的好用 package com.wamei.tool; import java.awt.image.BufferedIm