-
筆記查看全部
-
第四部我們需要將我們的devicetoken上傳給服務器,接下來使我們的服務器像蘋果設備推送push。演示過程。
我們已經拿到了一個tokenstr并把它應該傳給我們的服務器,但這里我們并沒有搭建自己的服務器,我們將模擬服務器的方式在本地創建一個服務器推送的環境,也就是說我們會使用一個第三方的工具去推送push,push如果要工作的話有幾個事項需要注意,我們之前已經生成了服務器使用的push證書,但是我們的客戶端APP的開發證書,也就是provising profile,要生成一個特定的調試證書,這個證書的id要跟bundle identifer保持一致。下面我們取蘋果的開發者網站去生成一個帶id的開發證書
查看全部 -
生成相應的證書和APPid
證書是做什么用的呢,就是后面我們給蘋果的APNS發送推送的時候,需要告訴蘋果我們到底是誰,這個是作為一個身份認證的作用。生成相應的證書和APPid之后。我會在我的電腦上去模擬一個push的測試環境,那么我們需要將證書導入出來。接下來我們需要在我們的工程中 完成push的注冊。完成注冊之后,我們才可以在我們的電腦上面搭建的測試環境向我們的手機去推送push,接下來我們回到我們的工程去完成push的注冊流程。我們一般將push的注冊代碼寫在APPdelegate,因為他需要在啟動的時候就完成注冊,因為這個是一個非常優先的過程,因為可能在你執行其他業務模塊之前我們就需要啟用這個push的功能,所以注冊的流程必須要盡快的啟動,我們一般把他的調用放在
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions?
這樣一個回調里面。我們建立一個函數調用,取名為registerAPN,在啟動的回調里面,我們就調用這個APP
關于怎么去注冊APNS的話在不同的系統版本下面行為表現并不一樣,主要是以ios7ios8為分界線,先用ios8的注冊的方式作為講解。后面我們會有專門的課程教大家怎么去設置push這樣一個交互的流程。
ios8環境下面如果要注冊APN的話,我們先需要生成一個notification的一個setting,也就是說像用戶詢問push的權限。
UIUserNotificationSettings* setting =?
[UIUserNotificationSettings settingsForTypes:
? ? ? ? ? (UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge)
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? categories:nil]
settingsForTypes就是我們需要申請的一個push的一個權限的類型。接下來是像我們的用戶申請權限,我們調用對應的api
[[UIApplication shareApplication]registerUserNotificationSettings:setting]在我們調用這行api之后我們會收到一個registerficationSettings的一個回調,如果用戶點了允許我們的push權限我們就會收到這個回調。
- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings?
到這里的時候就表示用戶已經允許了我們的push權限的申請。那么接下來的話就是獲取token,之前我們的流程圖當中也講解到了這一步。我們調用相應的api來獲取這樣一個token。
- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings?
{
[application?registerForRemoteNotifications];
}調用這行api之后,我們就會像蘋果的APNS服務器去申請一個APP的token,也就是我們的devicetoken,那我們看一下的devicetoken的回調是怎么樣的。
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
這個回調表示我們拿到了正確的devicetoken,需要轉化成服務器識別的string,并把它傳遞給我們的服務器,進行數據類型的轉換。我們需要調試一下來看一下tokenstr到底是一個什么樣的格式,因為蘋果的push不支持模擬器調試的,所以我們需要啟動設備去調試。
48 申請權限 在真機點擊好
60像服務器申請token
67拿到tokenstr
打印一下看一下具體的內容。
去掉空格和尖括號,將tokenstr傳給我們的服務器。因為我們并沒有搭建真正的服務器,我們就不去詳細的闡述了。我們的目標是在本地建立一個測試環境,推薦一個APP可以將蘋果的設備搭建成一個push服務器去向蘋果的APNS服務器去推送push,
查看全部 -
pu sh工作原理
iOS的pu sh通道是一個獨立的長鏈接通道,這個通道是由iOS系統獨立維護的。也就是說我們每一個手機系統在他開機之后就會有一個后臺悄悄的長鏈接連 ?向蘋果的服務器也就是說我們看到的APNS服務器。APNS當收到新的pu sh通知的時候它就會把通知推給我們的設備。這里一個大致的工作原理是這樣一個流程。我們的手機系統在啟動之后或者說打開某一個app之后生成一個獨立的唯一的token并把這個token上傳給我們自己的服務器,我們自己的服務器有了這個token之后就可以向自己的設備推送通知了,但是呢這個token這個通知并不能直接推送給我們的設備而是要推送給蘋果的服務器,我們之前提到了pu sh的通道是由蘋果去維護的是一個唯一的一個通道,所以我們的服務器需要拿著這個token并告訴蘋果服務器我們推送哪一條通知。也就是這樣,我們的server會把token加上pu sh的內容一起推給蘋果的服務器,蘋果的服務器在收到這個服務器的pu sh之后會把這個pu sh再根據這個token定位到我們的設備。也就是把我們的push推給我們的設備。推給我們的設備之后,我們的設備拿到這個token之后,他就能夠知道這個token是屬于我們設備上的哪一個app,這樣就可以把這個通知推送到具體某一個app當中。這樣一個流程大概就是pu sh的一個工作原理
查看全部 -
payload長度 ios7:256B,ios8:2k,ios9:4k查看全部
-
后臺模式開啟180秒查看全部
-
settings—同意之后回調里注冊—監聽查看全部
-
IOS8 2kb IOS94kb查看全部
-
IOS6 7payload字符限制256字節查看全部
-
后臺運行模式,iOS7之前是10分鐘,iOS7之后是3分鐘查看全部
-
voip 喚醒app,給出30秒的時間執行任務查看全部
-
很好查看全部
-
iOS的鏈接通道是一個獨立的長鏈接通道查看全部
-
您的demo可以分享出來嗎查看全部
-
Push工作原理查看全部
-
后臺任務,查看全部
-
靜默push查看全部
舉報