iOS 推送後臺語音播報
推送通知
- 注意:這裡說的推送通知跟NSNotification有所區別
- NSNotification是抽象的,不可見的
- 推送通知是可見的(能用肉眼看到)
- iOS中提供了2種推送通知
- 本地推送通知(Local Notification)
- 遠端推送通知(Remote Notification)
推送通知的呈現效果總結
- 總結一下,推送通知有5種不同的呈現效果
- 在螢幕頂部顯示一塊橫幅(顯示具體內容)
- 在螢幕中間彈出一個UIAlertView(顯示具體內容)
- 在鎖屏介面顯示一塊橫幅(鎖屏狀態下,顯示具體內容)
- 更新app圖示的數字(說明新內容的數量)
- 播放音效(提醒作用)
推送通知的使用細節
- 發出推送通知時,如果
- 點選推送通知後,預設會自動打開發出推送通知的app
- 不管app開啟還是關閉,推送通知都能如期發出
本地推送通知
- 什麼是本地推送通知
- 顧名思義,就是不需要聯網就能發出的推送通知(不需要伺服器的支援)
- 本地推送通知的使用場景
- 常用來定時提醒使用者完成一些任務,比如
- 清理垃圾、記賬、買衣服、看電影、玩遊戲
如何發出本地推送通知
- 建立本地推送通知物件
UILocalNotification *ln = [[UILocalNotification alloc] init];
- 設定本地推送通知屬性
- 推送通知的觸發時間(何時發出推送通知)
@property(nonatomic
- 推送通知的具體內容
@property(nonatomic,copy) NSString *alertBody;
- 在鎖屏時顯示的動作標題(完整標題:“滑動來” + alertAction)
@property(nonatomic,copy) NSString *alertAction;
- 音效檔名
@property(nonatomic,copy) NSString *soundName;
- app圖示數字
@property(nonatomic) NSInteger applicationIconBadgeNumber;
如何發出本地推送通知
- 排程本地推送通知(排程完畢後,推送通知會在特地時間
[[UIApplication sharedApplication] scheduleLocalNotification:ln];
- 獲得被排程(定製)的所有本地推送通知
@property(nonatomic,copy) NSArray *scheduledLocalNotifications;
(已經發出且過期的推送通知就算排程結束,會自動從這個陣列中移除)
- 取消排程本地推送通知
- (void)cancelLocalNotification:(UILocalNotification *)notification;
- (void)cancelAllLocalNotifications;
- 立即發出本地推送通知
- (void)presentLocalNotificationNow:(UILocalNotification *)notification;
本地推送通知的其他屬性
- 每隔多久重複發一次推送通知
@property(nonatomic) NSCalendarUnit repeatInterval;
- 點選推送通知開啟app時顯示的啟動圖片
@property(nonatomic,copy) NSString *alertLaunchImage;
- 附加的額外資訊
@property(nonatomic,copy) NSDictionary *userInfo;
- 時區
@property(nonatomic,copy) NSTimeZone *timeZone;
(一般設定為[NSTimeZone defaultTimeZone] ,跟隨手機的時區)
點選本地推送通知
- 當用戶點選本地推送通知,會自動開啟app,這裡有2種情況
- app並沒有關閉,一直隱藏在後臺
- 讓app進入前臺,並會呼叫AppDelegate的下面方法(並非重新啟動app)
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification;
- app已經被關閉(程序已死)
- 啟動app,啟動完畢會呼叫AppDelegate的下面方法
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
- launchOptions引數通過UIApplicationLaunchOptionsLocalNotificationKey取出本地推送通知物件
遠端推送通知(難)
- 什麼是遠端推送通知
- 顧名思義,就是從遠端伺服器推送給客戶端的通知(需要聯網)
- 遠端推送服務,又稱為APNs(Apple Push Notification Services)
- 為什麼需要遠端推送通知?
- 傳統獲取資料的侷限性
- 只要使用者關閉了app,就無法跟app的伺服器溝通,無法從伺服器上獲得最新的資料內容
- 遠端推送通知可以解決以上問題
- 不管使用者開啟還是關閉app,只要聯網了,都能接收到伺服器推送的遠端通知
遠端推送通知使用須知
- 所有的蘋果裝置,在聯網狀態下,都會與蘋果的伺服器建立長連線
- 什麼是長連線
- 只要聯網了,就一直建立連線
- 長連線的作用
- 時間校準
- 系統升級
- 查詢我的iPhone
- .. ...
- 長連線的好處
- 資料傳輸速度快
- 資料保持最新狀態
一.開發iOS程式的推送功能, iOS端需要做的事
1.請求蘋果獲得deviceToken
2.得到蘋果返回的deviceToken
3.傳送deviceToken給公司的伺服器
4.監聽使用者對通知的點選
二.除錯iOS的遠端推送功能, 必備條件:
1.真機
2.除錯推送需要的證書檔案
1> aps_development.cer : 某臺電腦就能除錯某個app的推送服務
2> ios_development.cer : 讓電腦具備真機除錯的能力(除錯裝置)
3> iphone5_qq.mobileprovision : 某臺電腦就能利用某臺裝置除錯某個程式
三.釋出具有推送服務的app
1> aps_production.cer : 如果釋出的程式中包含了推送服務,就必須安裝此證書
2> ios_distribution.cer : 讓電腦具備釋出程式的能力
3> qq.mobileprovision : 某臺電腦就能釋出某個程式
註冊遠端推送通知
- 註冊成功後會呼叫AppDelegate的下面方法,得到裝置的deviceToken
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
NSLog(@"%@", deviceToken);
}
點選遠端推送通知
- 當用戶點選遠端推送通知,會自動開啟app,這裡有2種情況
- app並沒有關閉,一直隱藏在後臺
- 讓app進入前臺,並會呼叫AppDelegate的下面方法(並非重新啟動app)
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo;
- app已經被關閉(程序已死)
- 啟動app,啟動完畢會呼叫AppDelegate的下面方法
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
- launchOptions引數通過UIApplicationLaunchOptionsRemoteNotificationKey取出伺服器返回的字典內容
JPush
- 什麼是JPush
- 一套遠端推送解決方案,支援android和iOS兩個平臺
- 它能夠快捷地為iOS App增加推送功能,減少整合APNs需要的工作量、開發複雜度
- 整合iOS SDK的步驟可以參考
一. 推送通知
1. 什麼是推送通知?
> 首先明確:**此處的推送通知跟我們的”NSNotification”沒有半毛錢關係
> 可以理解為: 向用戶推送一條資訊來通知使用者某件事情
> 作用: 可以在APP退到後臺,或者關閉時;繼續推送一條訊息告訴使用者某件事情
2. 推送通知的應用場景?
(1) 一些任務管理APP,會在任務時間即將到達時,通知你做該任務;
(2) 健身App定時提醒你應該健身了;
(3) 買過電影票後,提前半小時告訴你,電影即將開場;
(4) 當你QQ或者微信收到訊息時,即使退到後臺,或者關閉APP,也可以收到資訊通知告訴我們;
(5) 電商APP,推送一條訊息通知我們有新品上架等等
3. 推送通知的展現樣式?
(1) 在螢幕頂部顯示一塊橫幅(顯示具體內容)
(2) 在螢幕中間彈出一個UIAlertView(顯示具體內容)
(3) 在鎖屏介面顯示一塊橫幅(鎖屏狀態下,顯示具體內容)
(4) 更新app圖示的數字(說明新內容的數量)
(5) 播放音效(提醒作用)
* 注意:以上樣式只能是使用者自己設定,我們無法通過程式碼控制*
4. 推送通知的分類
1.本地推送通知
“本地”可以理解為”不聯網”;即使沒有網路情況下,也可以推送通知訊息
應用場景: 確定知道未來某個時間點應該提醒使用者什麼
2.遠端推送通知
概念:
與“本地”相對,表示,必須在聯網情況下才會向用戶推送通知訊息
遠端推送服務,又稱為APNs(Apple Push Notification Services)
應用場景:
1. 不確定未來某個時間點應該提醒使用者什麼,臨時性的
2. 當APP徹底退出時也想繼續讓使用者獲取一些最新訊息
使用原則: 誰能確定通知時間和內容, 誰就可以傳送(開發人員在APP內部通過程式碼傳送=本地通知; 伺服器可以確定通知時間和內容=遠端通知)
5. 推送通知的實現
1. 本地推送通知
1.建立UILocalNotification物件
2.設定一些必要屬性
推送通知的觸發時間(何時發出推送通知)
@property(nonatomic,copy) NSDate *fireDate;
推送通知的具體內容
@property(nonatomic,copy) NSString *alertBody;
3.開始推送通知
- 根據fireDate設定的時間進行推送
[[UIApplication sharedApplication] scheduleLocalNotification:ln];
- 立即推送
presentLocalNotificationNow:(UILocalNotification *)notification;
4.監聽使用者點選通知
- app處於前臺
此時不會彈框通知使用者通知的到達,但是還是會呼叫對應的代理方法
- app並沒有關閉,一直隱藏在後臺時
此時使用者點選通知資訊後,會讓app進入前臺,並會呼叫AppDelegate的下面方法
application: didReceiveLocalNotification:
- app已經被關閉(程序已死)
此時使用者點選通知資訊後,會啟動app,啟動完畢會呼叫AppDelegate的下面方法
application: didFinishLaunchingWithOptions:
launchOptions引數通過UIApplicationLaunchOptionsLocalNotif icationKey取出本推送通知物件
5.額外設定
每隔多久重複發一次推送通知
@property(nonatomic) NSCalendarUnit repeatInterval;
點選推送通知開啟app時顯示的啟動圖片
@property(nonatomic,copy) NSString *alertLaunchImage;
附加的額外資訊
@property(nonatomic,copy) NSDictionary *userInfo;
時區
@property(nonatomic,copy) NSTimeZone *timeZone;
(一般設定為[NSTimeZone defaultTimeZone] ,跟隨手機的時區)
在鎖屏時顯示的動作標題(完整標題:“滑動來” + alertAction)
@property(nonatomic,copy) NSString *alertAction;
音效檔名
@property(nonatomic,copy) NSString *soundName;
app圖示數字
@property(nonatomic) NSInteger applicationIconBadgeNumber;
6.其他操作
- 獲得被排程(定製)的所有本地推送通知
@property(nonatomic,copy) NSArray *scheduledLocalNotifications;
已經發出且過期的推送通知就算排程結束,會自動從這個陣列中移除
- 取消排程本地推送通知
- (void)cancelLocalNotification:(UILocalNotification *)notification;
- (void)cancelAllLocalNotifications;
7.注意事項
- 在iOS 8.0+,如果要使用本地通知,需要得到使用者的許可
在didFinishLaunchingWithOptions方法中新增如下程式碼
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert categories:nil];
[application registerUserNotificationSettings:settings];
8.額外補充
- 在iOS8.0之後,可以設定推送通知帶操作行為
在註冊設定時,設定categories:引數
監聽通知操作行為的點選
2. 遠端推送通知
1.遠端推送的原理
> 所有蘋果裝置, 在聯網狀態下,都會與蘋果伺服器建立一個長連線
“長連線”: 相對的一個概念是”短連線”
“長連線”優勢: 伺服器可以向客戶端傳送資訊,保證資料即時性
劣勢: 佔用客戶和伺服器資源
“短連線”優勢: 節省資源,一個會話結束後,立即釋放資源
劣勢: 伺服器無法主動向客戶端發信息
> 蘋果裝置“長連線”作用:
時間校準
系統升級
查詢我的iPhone
推送通知...
> 原理就是藉助蘋果裝置與APNs伺服器之間的長連線, 藉助APNs伺服器將訊息傳送給客戶端
2.遠端推送通知實現的條件
> 只有真機可以除錯推送通知
因為只有真機具備UDID, 才能夠生成deviceToken
> 需要真機除錯證書, 推送測試證書
3.遠端推送通知實現, 客戶端需要做的事
1. 請求蘋果獲得deviceToken
/**
* 請求通知授權,以及請求遠端通知
*/
- (void)registerRemoteNotification
{
if (isIOS(8.0))
{
1. 請求通知授權
UIUserNotificationSettings *notificationSet = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:notificationSet];
2. 註冊遠端通知
相關推薦
iOS 推送後臺語音播報
推送通知 注意:這裡說的推送通知跟NSNotification有所區別NSNotification是抽象的,不可見的推送通知是可見的(能用肉眼看到)iOS中提供了2種推送通知本地推送通知(Local Notification)遠端推送通知(Remote Notification) 推送通知的呈現效
iOS 退款(或訂單)推送訊息語音播報
近期無知經理突然提出一個蛋疼的需求,並表示這是“客戶和市場強制要求”做的。。。沒辦法,只能硬著頭皮上了。之前採用的是靜默推送+普通推送,而且網上大部分資料也預設使用的是靜默推送方式。據我所知,該方案有一
關於IOS12 推送系統語音播報無聲解決方案
自從iOS升級到12.0.1 突然發現推送語音播報沒有了效果了,之前iOS12 完全沒有影響; 如何實現(網上很多,基本方案就是UNNotificationServiceExtension+語音合成) 除錯了一下NotificationServiceExtension 打
iOS推送訊息push,語音播報
iOS 10 開始支援1. xcode - >file -> new -> target 選擇iOS下面的,Notification Service Extension Service Extension 中收到推送之後,用AVSpeechSynthesi
ios 後臺語音播報被拒
發件人 Apple 2. 5 Performance: Software Requirements Guideline 2.5.4 - Performance - Software Requirements Your app declares support for
iOS後臺語音播報
最近做專案有一個需求: app在前臺彈出一個自定義提示框,並且語音讀出相關內容. app在後臺的時候彈出推送通知,並且語音讀出相關內容. 這個需求用到的知識點: 1,文字轉語音(iOS 7.0 之後自帶) 2,靜默推送(個推,jpush等,本人選用的是個推.個推帶有透傳功能,輕鬆實現需
iOS 推送服務的簡易原理與配置
補充 com 思考 lib email p12 sig 導出 文件的 最近的項目需要用到iOS的push功能,在配置push功能的過程中遇到了一些不清楚的地方,經過查閱資料和思考,已有初步認識,下面進行一下梳理,我們的服務器端用的是Facebook的Parse。 完整的
iOS推送證書從申請到使用
打包 desc apns div overflow cbe b2c 點擊 打開終端 關於這個話題,已經有非常多寫的非常好的文章了。可是,在自己做的過程中,即使別人寫的已經非常好了,還是會遇到這樣那樣的問題。自己還是再寫一遍吧。 本文記錄了從無到有申請證書,到最後可
IOS推送之PHP代碼(轉)
推送消息 獲取 option code bsp 包含 connect 手機 pan 準備工作 1.獲取手機註冊應用的deviceToken(iphone手機註冊應用時返回唯一值deviceToken) 2.獲取ck.pem文件(做手機端的給) 3.獲取pass phrase
iOS 推送原理
消息 產品 接收 mage div cati src 推送 ans 1. 什麽是遠程消息推送? APNs:Apple Push Notification server 蘋果推送通知服務 蘋果的APNs允許設備和蘋果的推送通知服務器保持連接,支持開發者推送消息給用戶設備對應
[iOS]推送相關兩點
討論一下最近遇到的兩個問題: 1. 推送接收 2.點選推送開啟APP時資料的處理 理想情況是: app處於活躍狀態,有推送到來,在應用內部應當彈出我們自己生成的提示。 app處於非活躍狀態,有推送到來,彈出系統生成的提示,點選提示會進入app並且顯示相關內容
IOS推送http2使用netty服務啟動異常
IOS推送http2使用netty服務啟動異常 現象 使用netty開發×××送HTTP2,本機執行正常,部署至linux伺服器異常。 原因 是linux伺服器核心版本過低,所使用GLIBC類庫版本過低。netty要求GLIBC_2.10,我的伺服器最高才GLIBC_2.5。 linux檢視GLIB
ios (推送之遠端推送)升級成ios8系統之後有些程式接收不到遠端推送
維護一個程式,當手機升級到ios8之後就不能接收到遠端推送,顯示註冊失敗,查了下資料,原來是沒有獲取使用者許可,加了個方法試了下,ok if ([[[UIDevice currentDevice]systemVersion ]integerValue] >= 8) {
IOS推送通知開發流程
最近開發IOS的推送通知,現把流程及遇到的問題整理一下: 一、證書的準備工作 1.在開發電腦MAC上申請證書 開啟鑰匙串訪問 選擇從證書頒發機構請求證書 這裡的郵箱賬號寫你自己的,常用名稱可以隨便寫 選擇儲存到磁碟 這裡最好新建一個資料夾 用來專門儲存這些檔案
一步一步教你做ios推送 pem證書製作 php推送
最近在研究ios的推送問題,遇到了一些問題,最終整理了一下。放在這裡和大家分享 APNS的推送機制 首先我們看一下蘋果官方給出的對ios推送機制的解釋。如下圖 Provider就是我們自己程式的後臺伺服器,APNS是Apple Push Notification Service的縮寫,也就是
iOS推送小結(證書的生成、客戶端的開發、服務端的開發)
1.推送過程簡介 (1)App啟動過程中,使用UIApplication::registerForRemoteNotificationTypes函式與蘋果的APNS伺服器通訊,發出註冊遠端推送的申請。若註冊成功,回撥函式application:(UIApplication *)applicatio
JAVA SDK 極光推送後臺DEMO
pom導依賴 <properties> <comLog.version>1.1.1</comLog.version> </properties> <dependenci
伺服器端接入有盟推送,實現為android 和 ios推送的功能
在伺服器端要做可以主動推送給客戶端一些提示資訊,比如會員到期,有人讚了你的評論,有人關注你這樣的提示資訊, 作為新手,暫時還不能自己寫一些restful的東西,藉助有盟現成的推送api,做一下記錄,方便以後使用。 有盟開發文件 ht
iOS推送詳解(二)收到通知跳到指定頁面的處理辦法
接著上一篇繼續,當接到通知需要的操作 一、APP在前臺 實現效果,在前臺無論在那個頁面都在頂部展示一個橫條,顯示推送資訊,點選時跳到自己處理的頁面(10秒不點選自動移除這個橫條view) 直接上程式碼吧,講解一下思路,有問題留言 當
IOS 推送(本地推送、遠端推送、三方推送[極光推送])
Provider是給你手機應用發出推送訊息的伺服器,而APNS(Apple Push Notification Service)則是蘋果訊息推送伺服器。你本地的伺服器當需要給應用推送一條訊息的時候,先要將訊息發出到蘋果推送伺服器,然後再由蘋果推送伺服器將訊息發到安裝了該應用的手機。 接下來再看一張解釋圖