iOS訊息推送實現過程記錄

來源:互聯網
上載者:User

這裡記錄下iOS訊息推送實現的全過程

首先,申請秘鑰。




<喎?http://www.bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+1q668734yOtodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vv6q3otXfo6y1sci7xOO1w9PQsKGjoaOho6GjoaOhPC9wPgo8cD6147v31eLA7zwvcD4KPHA+PGltZyBzcmM9"http://www.2cto.com/uploadfile/Collfiles/20140416/2014041609101140.png" alt="\">





下面實現建立推送認證




接:





第一步完:



為認證添加推送功能:


點擊之後的效果:


點擊之後









到現在我們已經有倆個認證了,aps_development.cer 和CertificateSigningRequest.certSigningRequest。

下面的步驟比較關鍵。我們需要把機器中的之前的認證清理乾淨,如果不清理乾淨的畫會出現如下錯誤:

Error Domain=NSCocoaErrorDomain Code=3000 "未找到應用程式的“aps-environment”的權利字串" UserInfo=0x17007d6c0 {NSLocalizedDescription=未找到應用程式的“aps-environment”的權利字串}

這個錯誤大概的意思就是認證不匹配的意思。



清理之後,我們點擊


將推送認證添加進去。

之後我們匯出一個可以供伺服器端使用的。





以下代碼來著網上的活雷鋒貢獻。

下面附上用戶端代碼:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{    // Override point for customization after application launch.            NSString* str = [UIDevice currentDevice];        if ([launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey] != nil) {        //擷取應用程式訊息通知標記數(即小紅圈中的數字)        int badge = [UIApplication sharedApplication].applicationIconBadgeNumber;        if (badge>0) {            //如果應用程式訊息通知標記數(即小紅圈中的數字)大於0,清除標記。            badge--;            //清除標記。清除小紅圈中數字,小紅圈中數字為0,小紅圈才會消除。            [UIApplication sharedApplication].applicationIconBadgeNumber = badge;        }    }    //訊息推送註冊    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeSound|UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeBadge];            return YES;}-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{    NSString* token = [NSString stringWithFormat:@"%@",deviceToken];    NSLog(@"%@",token);        }- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {    NSString *error_str = [NSString stringWithFormat: @"%@", error];    NSLog(@"Failed to get token, error:%@", error_str);}- (void)application:(UIApplication *)applicationdidReceiveRemoteNotification:(NSDictionary *)userInfo{    //在此處理接收到的訊息。    NSLog(@"Receive remote notification : %@",userInfo);}









下面附上伺服器端代碼:

import org.apache.log4j.Logger;import org.apache.log4j.PropertyConfigurator;import javapns.*;import javapns.back.PushNotificationManager;import javapns.back.SSLConnectionHelper;import javapns.data.Device;import javapns.data.PayLoad;public class PushDemo {public static void main(String[] args) throws Exception { try        {            //從用戶端擷取的deviceToken,在此為了測試簡單,寫固定的一個測試裝置標識。           String deviceToken = "9f8e0099 1e72c4ab ca835ec3 994e93d9 a09ce215 62d91bb3 6e929a33 02c29456";                       System.out.println("Push Start deviceToken:" + deviceToken);            //定義訊息模式            PayLoad payLoad = new PayLoad();            payLoad.addAlert("this is test!");            payLoad.addBadge(1);//訊息推送標記數,小紅圈中顯示的數字。            payLoad.addSound("default");            //註冊deviceToken            PushNotificationManager pushManager = PushNotificationManager.getInstance();            pushManager.addDevice("iPhone", deviceToken);            //串連APNS            String host = "gateway.sandbox.push.apple.com";            //String host = "gateway.push.apple.com";            int port = 2195;            String certificatePath = "/Users/tokou/Desktop/PushDemo.p12";//前面產生的用於JAVA後台串連APNS服務的*.p12檔案位置            String certificatePassword = "123";//p12檔案密碼。            pushManager.initializeConnection(host, port, certificatePath, certificatePassword, SSLConnectionHelper.KEYSTORE_TYPE_PKCS12);            //發送推送            Device client = pushManager.getDevice("iPhone");            System.out.println("推送訊息: " + client.getToken()+"\n"+payLoad.toString() +" ");            pushManager.sendNotification(client, payLoad);            //停止串連APNS            pushManager.stopConnection();            //刪除deviceToken            pushManager.removeDevice("iPhone");            System.out.println("Push End");        }        catch (Exception ex)        {            ex.printStackTrace();        }}}


















聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.