iOS本地推送(本地通知)
在iOS8之後,以前的本地推送寫法可能會出錯,接收不到推送的資訊,
如果出現以下資訊:
1 Attempting to schedule a local notification
2 with an alert but haven't received permission from the user to display alerts
3 with a sound but haven't received permission from the user to play sounds
說明在IOS8下沒有註冊,所以需要額外新增對IOS8的註冊方法,API中有下面這個方法:
// Registering UIUserNotificationSettings more than once results in previous settings being overwritten. - (void)registerUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings NS_AVAILABLE_IOS(8_0);
這個方法是8.0之後才能使用的,所以需要判斷一下系統的版本。
第一步:註冊本地通知:
// 設定本地通知 + (void)registerLocalNotification:(NSInteger)alertTime { UILocalNotification *notification = [[UILocalNotification alloc] init]; // 設定觸發通知的時間 NSDate *fireDate = [NSDate dateWithTimeIntervalSinceNow:alertTime]; NSLog(@"fireDate=%@",fireDate); notification.fireDate = fireDate; // 時區 notification.timeZone = [NSTimeZone defaultTimeZone]; // 設定重複的間隔 notification.repeatInterval = kCFCalendarUnitSecond; // 通知內容 notification.alertBody = @"該起床了..."; notification.applicationIconBadgeNumber = 1; // 通知被觸發時播放的聲音 notification.soundName = UILocalNotificationDefaultSoundName; // 通知引數 NSDictionary *userDict = [NSDictionary dictionaryWithObject:@"開始學習iOS開發了" forKey:@"key"]; notification.userInfo = userDict; // ios8後,需要新增這個註冊,才能得到授權 if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerUserNotificationSettings:)]) { UIUserNotificationType type = UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound; UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:type categories:nil]; [[UIApplication sharedApplication] registerUserNotificationSettings:settings]; // 通知重複提示的單位,可以是天、周、月 notification.repeatInterval = NSCalendarUnitDay; } else { // 通知重複提示的單位,可以是天、周、月 notification.repeatInterval = NSDayCalendarUnit; } // 執行通知註冊 [[UIApplication sharedApplication] scheduleLocalNotification:notification]; }
第二步:處理通知,這個是在appdelegate中的代理 方法回撥
// 本地通知回撥函式,當應用程式在前臺時呼叫 - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification { NSLog(@"noti:%@",notification); // 這裡真實需要處理互動的地方 // 獲取通知所帶的資料 NSString *notMess = [notification.userInfo objectForKey:@"key"]; UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"本地通知(前臺)" message:notMess delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alert show]; // 更新顯示的徽章個數 NSInteger badge = [UIApplication sharedApplication].applicationIconBadgeNumber; badge--; badge = badge >= 0 ? badge : 0; [UIApplication sharedApplication].applicationIconBadgeNumber = badge; // 在不需要再推送時,可以取消推送 [HomeViewController cancelLocalNotificationWithKey:@"key"]; }
第三步:在需要的時候取消某個推送
// 取消某個本地推送通知
+ (void)cancelLocalNotificationWithKey:(NSString *)key {
// 獲取所有本地通知陣列
NSArray *localNotifications = [UIApplication sharedApplication].scheduledLocalNotifications;
for (UILocalNotification *notification in localNotifications) {
NSDictionary *userInfo = notification.userInfo;
if (userInfo) {
// 根據設定通知引數時指定的key來獲取通知引數
NSString *info = userInfo[key];
// 如果找到需要取消的通知,則取消
if (info != nil) {
[[UIApplication sharedApplication] cancelLocalNotification:notification];
break;
}
}
}
}
相關推薦
iOS本地推送(本地通知)
在iOS8之後,以前的本地推送寫法可能會出錯,接收不到推送的資訊, 如果出現以下資訊: 1 Attempting to schedule a local notification 2 with an
iOS訊息推送(Java實現)
首先來了解一下蘋果的訊息推送APNS(英文全稱:Apple Push Notification service) 先來看兩張蘋果對於推送的兩張解釋圖: 大概的意思就是,提供商把訊息推送至蘋果的推送伺服器,再由蘋果推送伺服器將訊息推送給手機客戶端,或者反過來手機客戶端把
android 之推送(本地推送遠端推送)
在現在的app中推送技術很普遍,推送可以提高使用者活躍度,也可以進行一些活動推送,今天就跟大家聊一下推送 推送分為遠端推送和本地推送,都可以通過推送訊息跳轉到一些應用或者活動介面,本地推送幾行程式碼就可以實現,遠端推送就需要藉助一些平臺的力量 (1)本地推送 Notifi
Android訊息推送(廣播機制)+通知
Android廣播機制使用了觀察著模式; (1) 通知 1) 獲取狀態通知欄管理 NotificationManager 是一個系統Service,所以必須通過getSystemService(NO
Spring mvc服務端消息推送(SSE技術)
javascrip tro jstl var 通信 主動 form imp title SSE技術是基於單工通信模式,只是單純的客戶端向服務端發送請求,服務端不會主動發送給客戶端。服務端采取的策略是抓住這個請求不放,等數據更新的時候才返回給客戶端,當客戶端接收到消息後,再向
HTTP/2 服務器推送(Server Push)教程(HTTP/2 協議的主要目的是提高網頁性能,配置Nginx和Apache)
tcp tac 面板 參考 寫入 修改 現實 多個 後端 HTTP/2 協議的主要目的是提高網頁性能。 頭信息(header)原來是直接傳輸文本,現在是壓縮後傳輸。原來是同一個 TCP 連接裏面,上一個回應(response)發送完了,服務器才能發送下一個,現在可以多個回
小程序模板消息後臺發送(集體通知)
function 新的 pid func req int lds 形式 rsn 1.在小程序後臺配置好模板 2.其中curl需要加上一個參數設置(https發送需要) 3.項目代碼示例:其中有token過期更新的處理方法 /* * 通知最近7天小程序用戶 * param()
小程式訊息推送(含原始碼)java實現小程式推送,springboot實現微信訊息推送
最近需要開發微信和小程式的推送功能,需要用java後臺實現推送,自己本身java和小程式都做,所以就自己動手實現下小程式的模版推送功能推送。 實現思路 1 小程式獲取使用者openid,收集formid傳給java後臺 2 java推送訊息給指定小程式使用
訊息推送(華為)
關於「程序保活」的需求總是很多,以往的解決辦法也是層出不窮,但是隨著Android系統的更新,99%的方法已經無效 三方SDK喚醒(不現實) 系統白名單(不靠譜) 應用全家桶(不現實) 系統廣播喚醒(不可控) 兩個Service互相喚醒(涼了) 使用Timer
MQTT+ActiveMQ實現訊息推送(移動端)
這個小程式是我導師給我佈置的一個任務,網上教程不是很多,遇到的一些困難都是自己解決的,所以寫出來分享一下,有什麼問題大家可以留言,盡力幫大家解決。 來到解壓目錄下,進入bin目錄下的win64資料夾(如何是32位機器則進入win32),執行activemq
unity接入極光推送(Android篇)
環境:unity5.2 + eclipse + xcode8;安卓打包模式:eclipse出jar包,unity一鍵打包 提示:安卓無法做到殺掉程序後也接收推送,除非你跟手機系統運營商合作(已經和極光商務確認過),iOS是沒問題的。 (開始之前先在極光後臺建立App,流程簡單,這
APP訊息推送(APP Push)解決方案-服務端工作邏輯和實現
一、APP 推送概述: App推送訊息是我們常見的一種app訊息提醒方式。 我們的實現需要第三方的支援,實現方式是後臺通過介面將Push請求傳送至第三方,第三方實現在App所在裝置上的推送。 二、APP推送後臺處理邏輯: 在與推送平臺互動時,後臺需要向第三方傳送兩部分資訊
HTTP/2 伺服器推送(Server Push)教程
HTTP/2 協議的主要目的是提高網頁效能。頭資訊(header)原來是直接傳輸文字,現在是壓縮後傳輸。原來是同一個 TCP 連線裡面,上一個迴應(response)傳送完了,伺服器才能傳送下一個,現在可以多個迴應一起傳送。伺服器推送(server push)是 HTTP/2
swift3.0 整合極光推送(v2.2)iOS10.0最新寫法
// // AppDelegate.swift // 1120-jiguang // // Created by targetcloud on 2016/11/20. // Copyright © 2016年 targetcloud. All rights rese
spring boot 整合activemq 進行服務端訊息推送(web頁面)
最近公司的專案裡有需要服務端向web端實時推送訊息的需求,網上搜索了一番,有前端頁面通過定時任務向後臺傳送ajax請求重新整理,有使用第三方提供的訊息服務(GoEasy),前者因為會有很多請求是無用的,容易加大伺服器負荷造成宕機,後者現在收費了(免費的也只能用一
iOS開發 - ANPs推送通知 標簽: 推送通知ANPs遠程推送、本地推送
control con 垃圾 pre 條件 %20 常用 建立連接 mod iOS開發 - ANPs推送通知 標簽: 推送通知ANPs遠程推送本地推送 2015-05-03 14:12 3510人閱讀 評論(0) 收藏 舉報 本文章已收錄於: iOS知識庫
iOS本地通知或者本地推送的使用
遠端推送基本都沒啥問題,按規範來走,證書做好給伺服器,本地載入上證書基本都是可以實現的。 本地通知就需要自己建立通知,傳送通知,比遠端多了這兩步,一般的會有幾個需要注意的地方: 1,iOS8-iOS10是一套發通知方法,10以後是一套方法; 2,通知可能不顯示,可能會覆
本地推送,遠端推送(JPUSHService極光推送例)
本地推送,例:app鬧鐘,定時提醒== /* //iOS8以後需要先註冊本地通知,需要經過使用者的同意 if ([[UIDevice currentDevice].systemVersion doubleValue] >= 8.0) {
iOS本地推送與取消本地通知—UILocalNotification的使用
1.首先我們初始化一個 UISwith self.swith = [[UISwitch alloc] initWithFrame:CGRectMake(80, 80, 160, 30)]; [_swith addTarget:self action:@se
項目實戰:iOS極光推送集成(30分鐘搞定)
adg append ati 技術分享 tro markdown ocs sym xcode 推送有非常多,如個推、友盟、融雲和極光等等。在這裏就講下怎樣使用極光推送。主要內容是將官方文檔資料詳細匯總並一步一步集成到項目中,您也能夠直接去官方文檔閱