IOS 推送,極光推送,推送到指定頁面

今天朋友說到推送,因?yàn)橐郧耙矝]做過,就跟著看了看極光的推送.(自己的每一步,很詳細(xì),很啰嗦..大神就不用看了...)
2016-12-15更新了跳轉(zhuǎn)到指定頁面代碼--第二部分

我是直接用了我們自己的發(fā)布證書,在發(fā)布證書的基礎(chǔ)上做的推送證書,如果說還沒有做任何證書,或者準(zhǔn)備做測試證書使用的,可以點(diǎn)擊看極光的文檔一步步做,其中雖然有部分不同,但大致方向還是對的.證書配置鏈接
1.設(shè)置推送證書

1-1

選擇對應(yīng)的app,如果之前沒有推送證書的話,Push 那一欄應(yīng)該是灰的.然后點(diǎn)擊Edit

1-2

這里和我的可能不一樣,開發(fā)環(huán)境選上面的,生產(chǎn)環(huán)境就點(diǎn)下面的.點(diǎn)擊Create Certificate.

1-3

continue;

1-4

這里需要在自己電腦上做一個CSR證書.
打開電腦的鑰匙串訪問

1-5

1-6

郵件地址,常用名稱隨便填,然后選擇存儲到磁盤,存到本地,在1-4里選擇,然后上傳給蘋果.

1-7

生產(chǎn)成功,下載到本地.雙擊打開.
2.生成P12,傳給極光
雙擊打開下載的證書

2-1

應(yīng)該是apple push 開頭的.右鍵,導(dǎo)出.

2-2

名字隨便起,盡量不用漢字.最后一項要選擇.p12.然后存儲好.(密碼隨便起一個,簡單點(diǎn),一會要用到)
3.在極光創(chuàng)建應(yīng)用,上傳p12文件.融SDK.

3-1

因?yàn)槲抑蛔隽松a(chǎn)證書,沒有用開發(fā)證書,所以選擇ios生產(chǎn)證書,把剛生產(chǎn)的p12,上傳,密碼就填剛剛的密碼.然后創(chuàng)建.
下載極光的SDK極光SDK下載地址
解壓之后只需要lib內(nèi)東西,將整個lib拖動到項目內(nèi)

3-2

記得要選groups啊!!!
然后入一堆庫:
CFNetwork.framework
CoreFoundation.framework
CoreTelephony.framework
SystemConfiguration.framework
CoreGraphics.framework
Foundation.framework
UIKit.framework
Security.framework
Xcode7需要的是libz.tbd想暗;Xcode7以下版本是libz.dylib
Adsupport.framework (獲取IDFA需要;如果不使用IDFA债鸡,請不要添加)
然后在AppDelegate入口類里進(jìn)行注冊.(我自己寫了一個方法,記得要調(diào)用啊....)

import"JPUSHService.h"

3-3

advertisingId這個我換了,極光的代碼里的報錯了直接,我用自己找的方法,反正就是個唯一標(biāo)識.
最后的方法里,Option:后面我寫的nil,因?yàn)槲臋n里也沒接受,不知道是什么意思,(反正寫nil也能用).
appKey是在極光創(chuàng)建應(yīng)用之后極光給的.填自己的就行了.channel:0是開發(fā)證書,1是生產(chǎn).我的發(fā)布選1.apsForProduction:是否生產(chǎn)環(huán)境.我的是yes.
后面還有幾個代理方法,代碼(簡書省略掉了很多空格....最后還是要記得調(diào)用jPush方法啊....):

pragma mark -極光推送

-(void)jPush
{
NSString*advertisingId = [[UIDevicecurrentDevice].identifierForVendorUUIDString];
//Required
if([[UIDevicecurrentDevice].systemVersionfloatValue] >=8.0) {
//可以添加自定義categories
[JPUSHServiceregisterForRemoteNotificationTypes:(UIUserNotificationTypeBadge|
UIUserNotificationTypeSound|
UIUserNotificationTypeAlert)
categories:nil];
}else{
//categories必須為nil
[JPUSHServiceregisterForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge|
UIRemoteNotificationTypeSound|
UIRemoteNotificationTypeAlert)
categories:nil];
}
//Required
//如需繼續(xù)使用pushConfig.plist文件聲明appKey等配置內(nèi)容江滨,請依舊使用[JPUSHService setupWithOption:launchOptions]方式初始化敷钾。
[JPUSHServicesetupWithOption:nilappKey:@"你自己的APPKEY"
channel:@"1"
apsForProduction:YES
advertisingIdentifier:advertisingId];
}

  • (void)application:(UIApplication)application
    didRegisterForRemoteNotificationsWithDeviceToken:(NSData
    )deviceToken {
    /// Required -注冊DeviceToken
    [JPUSHServiceregisterDeviceToken:deviceToken];
    }
  • (void)application:(UIApplication)application didReceiveRemoteNotification:(NSDictionary)userInfo {
    // Required,For systems with less than or equal to iOS6
    [JPUSHServicehandleRemoteNotification:userInfo];
    }
  • (void)application:(UIApplication)application didReceiveRemoteNotification:(NSDictionary)userInfo fetchCompletionHandler:(void(^)(UIBackgroundFetchResult))completionHandler {
    // IOS 7 Support Required
    [JPUSHServicehandleRemoteNotification:userInfo];
    completionHandler(UIBackgroundFetchResultNewData);
    }
  • (void)application:(UIApplication)application didFailToRegisterForRemoteNotificationsWithError:(NSError)error {
    //Optional
    NSLog(@"did Fail To Register For Remote Notifications With Error: %@", error);
    }

4.真機(jī)運(yùn)行
在真機(jī)上運(yùn)行,沒有問題的話,就到極光官網(wǎng)上發(fā)送一個推送,向全體人發(fā)的...測試了一下,看下最后效果

4-1

-----------------------補(bǔ)充-------------------------
Xcode8之后還要有一步

5-1

這個push要打開,否則會獲取不到deviceToken;

/-----------------第二部分---推送到指定頁面------------------/#

1.首先是創(chuàng)建了開發(fā)者證書(因?yàn)橹拔抑苯酉茸龅陌l(fā)布證書),步驟和前面的發(fā)布證書的創(chuàng)建是一樣的.
2.創(chuàng)建完成下載到本地,然后生成p12傳給極光,步驟也和上面是一樣的.
3.在appdelegate里注冊極光的時候之前有一個是YES,暫時要先改為NO,因?yàn)橐日{(diào)試,最后上架前再改回來,如圖

2-3-1

然后連接真機(jī),運(yùn)行下你的程序,極光會打印出來log,會有真機(jī)的id,這個用于你后續(xù)的調(diào)試.

2-3-2

記住這個ID,然后在極光推送中心填寫真機(jī)ID,測試下是否真的只發(fā)送到你的手機(jī)推送,如圖.成功后才能繼續(xù).

2-3-3

4.在appdelegate里有兩個方法

- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo
{
//1號方法

/**---當(dāng)app在后臺或者被關(guān)閉時,發(fā)送推送會調(diào)用這個方法(不確定)----*/
    
    // Required,For systems with less than or equal to iOS6
    [JPUSHService handleRemoteNotification:userInfo];
    
    
    if (application.applicationState == UIApplicationStateActive)
    {
        NSDictionary *aps = userInfo[@"aps"];
        NSString *newstitle = aps[@"alert"];
        //這里寫APP正在運(yùn)行時菌赖,推送過來消息的處理
        UIAlertView *al = [[UIAlertView alloc]initWithTitle:@"新消息" message:newstitle delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"查看", nil];
        al.tag = 100;
        [al show];
       
        
        
    } else if (application.applicationState == UIApplicationStateInactive ) {
        
        //APP在后臺運(yùn)行,推送過來消息的處理
        [self goToMssageViewControllerWith:userInfo];
        
        
        
    } else if (application.applicationState == UIApplicationStateBackground) {
        
        //APP沒有運(yùn)行域携,推送過來消息的處理
        [self goToMssageViewControllerWith:userInfo];
        
    }
}
- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo fetchCompletionHandler:(void(^)(UIBackgroundFetchResult))completionHandler 
{
//2號方法

/**---當(dāng)app在運(yùn)行時,發(fā)送推送會調(diào)用這個方法(不確定)----*/
    // IOS 7 Support Required
    [JPUSHService handleRemoteNotification:userInfo];
    completionHandler(UIBackgroundFetchResultNewData);
   
    if (application.applicationState == UIApplicationStateActive)
    {
        
        NSDictionary *aps = userInfo[@"aps"];
        NSString *newstitle = aps[@"alert"];
        //這里寫APP正在運(yùn)行時棺弊,推送過來消息的處理
        UIAlertView *al = [[UIAlertView alloc]initWithTitle:@"新消息" message:newstitle delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"查看", nil];
        al.tag = 100;
        [al show];
       
        
    } else if (application.applicationState == UIApplicationStateInactive ) {
        
        //APP在后臺運(yùn)行晶密,推送過來消息的處理
        [self goToMssageViewControllerWith:userInfo];
        
        
    } else if (application.applicationState == UIApplicationStateBackground) {
        
        //APP沒有運(yùn)行,推送過來消息的處理
        [self goToMssageViewControllerWith:userInfo];
    }
}

這里特別說明一下,我在方法1和方法2里將三種情況都寫了,但實(shí)際上我在網(wǎng)上搜到的是方法1適用于app運(yùn)行時調(diào)用,而我實(shí)際測試正好與搜到的相反,所有我將兩種方法里各個情況都寫上了,到底如何你可以自己試試##

5.gotomessage的方法



//跳轉(zhuǎn)方法

- (void)goToMssageViewControllerWith:(NSDictionary*)msgDic
{
    NSString *type = msgDic[@"type"];    
    if([type isEqualToString:@"news"])
    {
        /**---新聞---*/
        NSString *newsId  = msgDic[@"newsId"];
        
        ZXNewDetailVC *fcdVC = [[ZXNewDetailVC alloc]init];
        fcdVC.msgId = [NSString stringWithFormat:@"information/getBytype.html?id=%@",newsId];
        [self.window.rootViewController presentViewController:fcdVC animated:YES completion:nil];
         
    }
 
    else
    {
        NSLog(@"others");
    }
    
}

這里的type,news,newsId,都是我自己在發(fā)推送的時候定義的,你可以根據(jù)自己app的實(shí)際需要更改,建議先打印一下msgDic看一下數(shù)據(jù)機(jī)構(gòu).在發(fā)送的時候我的如圖所示,

Paste_Image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末模她,一起剝皮案震驚了整個濱河市稻艰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌侈净,老刑警劉巖尊勿,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異畜侦,居然都是意外死亡元扔,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門旋膳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來澎语,“玉大人,你說我怎么就攤上這事∩眯撸” “怎么了尸变?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長减俏。 經(jīng)常有香客問我召烂,道長,這世上最難降的妖魔是什么垄懂? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任骑晶,我火速辦了婚禮,結(jié)果婚禮上草慧,老公的妹妹穿的比我還像新娘桶蛔。我一直安慰自己,他們只是感情好漫谷,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布仔雷。 她就那樣靜靜地躺著,像睡著了一般舔示。 火紅的嫁衣襯著肌膚如雪碟婆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天惕稻,我揣著相機(jī)與錄音竖共,去河邊找鬼。 笑死俺祠,一個胖子當(dāng)著我的面吹牛公给,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蜘渣,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼淌铐,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蔫缸?” 一聲冷哼從身側(cè)響起腿准,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎拾碌,沒想到半個月后吐葱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡校翔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年唇撬,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片展融。...
    茶點(diǎn)故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出告希,到底是詐尸還是另有隱情扑浸,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布燕偶,位于F島的核電站喝噪,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏指么。R本人自食惡果不足惜酝惧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望伯诬。 院中可真熱鬧晚唇,春花似錦、人聲如沸盗似。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赫舒。三九已至悍及,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間接癌,已是汗流浹背心赶。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留缺猛,地道東北人缨叫。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像枯夜,于是被迫代替她去往敵國和親弯汰。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 不同版本極光推送SDK集成各有差異湖雹,集成時一定要注意版本號咏闪,樓主已將博文更新成最新的SDK JPush v3.0....
    i順頌時宜閱讀 7,867評論 37 170
  • 極光推送: 1.JPush當(dāng)前版本是1.8.2,其SDK的開發(fā)除了正常的功能完善和擴(kuò)展外也緊隨蘋果官方的步伐摔吏,SD...
    Isspace閱讀 6,719評論 10 16
  • 今天朋友說到推送,因?yàn)橐郧耙矝]做過,就跟著看了看極光的推送.(自己的每一步,很詳細(xì),很啰嗦..大神就不用看了......
    d0u閱讀 1,838評論 3 4
  • 推送通知 注意:這里說的推送通知跟NSNotification有所區(qū)別 NSNotification是抽象的鸽嫂,不可...
    iOS開發(fā)攻城獅閱讀 4,227評論 1 13
  • 以前開始學(xué)Python的時候,根據(jù)某大神的建議買了本《Python核心編程》第2版征讲,慢慢學(xué)習(xí)据某。而最近回家沒帶書回來...
    潘澤彥閱讀 5,270評論 0 3