ios推送(友盟推送,百度推送,極光推送)


我先來說一下我對原理的理解:

移動設備一聯網或者更換網絡,都會把該網絡的公網和路由的地址和端口,以及設備的信息請求到apns,這樣蘋果服務器apns就可以根據設備id找到ip地址。

那么,在以上的基礎上,一旦我們自己的服務器向apns發送消息,該消息攜帶指向目標設備和目標app等信息,apns接收到新消息准備推送,他就可以跟據該消息指向的設備找到ip地址,給該地址推送消息。

手機接收到消息,會根據消息攜帶的信息判斷是屬於哪個app的,所以在點擊推送消息的時候會啟動相應的app

 

 

友盟推送:

開發測試時推送(必須在真機上),這里以下的操作,最好是在已經完成真機測試了,再進行以下操作:

1,在蘋果開發者中心,添加app ids,然后添加APNS Development Cer,下載安裝,並導出.p12;創建developmentProfiles,運行。

2,用.p12在 http://message.umeng.com/appList 中添加應用,復制appkey(后面會用到)

3,下載sdk  http://dev.umeng.com/message/ios/sdk-download,導入sdk,在appDelegate.m中添加:

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
    NSString *token = [[deviceToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];
    token = [token stringByReplacingOccurrencesOfString:@" " withString:@""];
    NSLog(@"%@",token);
    [UMessage registerDeviceToken:deviceToken];
}

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    [UMessage didReceiveRemoteNotification:userInfo];
}

 

4,回到第2步,http://message.umeng.com/540aaa38fd98c5727c021ac9/device ,添加設備,把在控制台打印的deviceToken復制過去。然后差不多就可以了

 

以上有很多步驟省略了,大體意思應該能明白。

 

 

百度推送:

首先注意,百度推送是個坑,我建議使用友盟推送,但是為了統一,我才使用百度推送。

為什么是坑呢,因為百度有兩種推送,有一種不是我們用的,但是卻混淆在一起。

請在:http://developer.baidu.com/console#app/project 創建工程;並拿到key,

而且開發文檔也有2套,注意是這一套:http://developer.baidu.com/wiki/index.php?title=docs/cplat/push/guideios

另外:文檔中要注意的是:

添加SDK到APP工程。

1. 將libBPush.a和BPush.h添加到Xcode工程

2. 添加JSONKit.m和JSONKit.h到Xcode工程,注意百度推送提供的JSONKit.m需要設置-fno-objc-arc,以兼容arc

3,添加CoreTelephony.framework到工程

 

草,現在還不能支持ios8,ios8都出來3個多月了

 

激光推送

也是個坑,總之有兩個地方坑了我。

1,我是用pods導入的JPush庫,會報錯

Undefined symbols for architecture armv7: "_OBJC_CLASS_$_UIUserNotificationSettings"

原因,pods下好的一個libPushSDK-1.8.2.a庫文件需要手動導入。

2,我是用的多個開發者賬號同時開發,會報錯

Not get deviceToken yet. Maybe: your certificate not configured APNs

或者

did Fail To Register For Remote Notifications With Error: Error Domain=NSCocoaErrorDomain Code=3000 "未找到應用程序的“aps-environment”的權利字符串" UserInfo=0x1c55e000

官網解釋:http://docs.jpush.cn/pages/viewpage.action?pageId=7864782#iOS常見問題-為什么啟動的時候出現DidFailToRegisterForRemoteNotificationsWithError的錯誤

很系統,但是漏掉了我這種情況。

還需要設置Code signing identity為你現在使用的開發者賬號。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM