溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

iOS不使用第三方平臺(tái),發(fā)送推送消息

發(fā)布時(shí)間:2020-08-01 20:24:45 來(lái)源:網(wǎng)絡(luò) 閱讀:1055 作者:wangjinhan89 欄目:移動(dòng)開(kāi)發(fā)

iOS不使用第三方平臺(tái),發(fā)送推送消息

先看看客戶端:

       需要關(guān)注兩個(gè)點(diǎn):一是代碼部分的DeviceToken獲取,且看代碼

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

    //消息推送支持的類(lèi)型

    UIRemoteNotificationType types =

    (UIRemoteNotificationTypeBadge

     |UIRemoteNotificationTypeSound

     |UIRemoteNotificationTypeAlert);

    //注冊(cè)消息推送

    [[UIApplication sharedApplicationregisterForRemoteNotificationTypes:types];

    // Override point for customization after application launch.

    return YES;

}


 

//獲取DeviceToken成功

- (void)application:(UIApplication *)application

didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken

{

    NSString *pushToken = [[[[deviceToken description]

                             stringByReplacingOccurrencesOfString:@"<" withString:@""]

                            stringByReplacingOccurrencesOfString:@">" withString:@""]

                           stringByReplacingOccurrencesOfString:@" " withString:@""] ;

    NSLog(@"DeviceToken:%@",pushToken);

    //這里進(jìn)行的操作,是將Device Token發(fā)送到服務(wù)端

}

注:這里用到一個(gè)小技巧,怎樣把NSData數(shù)據(jù)內(nèi)容里面的“<”,">"," "給去掉,得到一個(gè)有效的DeviceToken。


//注冊(cè)消息推送失敗

- (void)application:(UIApplication *)application

didFailToRegisterForRemoteNotificationsWithError:(NSError *)error

{

    NSLog(@"Register Remote Notifications error:{%@}",[error localizedDescription]);

}

 


 

//處理收到的消息推送

- (void)application:(UIApplication *)application

didReceiveRemoteNotification:(NSDictionary *)userInfo

{

    NSLog(@"Receive remote notification : %@",userInfo);

    NSDictionary *aps = [userInfo valueForKey:@"aps"];

    NSString *content = [aps valueForKey:@"alert"]; //推送顯示的內(nèi)容

    

    UIAlertView *alert =

    [[UIAlertView allocinitWithTitle:@"溫馨提示"

                               message:content

                              delegate:nil

                     cancelButtonTitle:@"確定"

                     otherButtonTitles:nil];

    [alert show];

}

 


二是制作帶有推送消息的證書(shū)

進(jìn)入蘋(píng)果開(kāi)發(fā)網(wǎng)站:

iOS不使用第三方平臺(tái),發(fā)送推送消息

選中帶有推送服務(wù):

iOS不使用第三方平臺(tái),發(fā)送推送消息

創(chuàng)建成功之后,下載證書(shū)雙擊,在鑰匙串就能看到:

iOS不使用第三方平臺(tái),發(fā)送推送消息

右鍵導(dǎo)出p12文件,可以設(shè)置密碼,也可以不設(shè),一般不設(shè)置。以上證書(shū)就OK了。

 

 

下面來(lái)看看java寫(xiě)的服務(wù)器代碼:

package com.sdunicom.iphone.apns;

import javapns.back.PushNotificationManager;
import javapns.back.SSLConnectionHelper;
import javapns.data.Device;
import javapns.data.PayLoad;

public class MainSend {
public static void main(String[] args) throws Exception {
try {
String deviceToken = "56378f94d620b0210a9228ea513a4ba2cbe61d0b29143116812da411009c0c9e";

PayLoad payLoad = new PayLoad();
payLoad.addAlert("盛科維的同胞們,大家好");
payLoad.addBadge(1);//消息推送標(biāo)記數(shù),小紅圈中顯示的數(shù)字。
payLoad.addSound("default");

PushNotificationManager pushManager = PushNotificationManager.getInstance();
pushManager.addDevice("iPhone", deviceToken);

//Connect to APNs
String host= "gateway.sandbox.push.apple.com";
int port = 2195;
String certificatePath= "/Users/wangjinhan/Desktop/最近技術(shù)研究/java后臺(tái)推送程序/developcm.p12";
String certificatePassword= "";
pushManager.initializeConnection(host,port, certificatePath,certificatePassword, SSLConnectionHelper.KEYSTORE_TYPE_PKCS12);

//Send Push
Device client = pushManager.getDevice("iPhone");
pushManager.sendNotification(client, payLoad);
pushManager.stopConnection();

pushManager.removeDevice("iPhone");
}
catch (Exception e) {
e.printStackTrace();
}

}
}

/***********************

代碼有幾點(diǎn)要注意:

1.String deviceToken = "56378f94d620b0210a9228ea513a4ba2cbe61d0b29143116812da411009c0c9e";

要發(fā)送到對(duì)應(yīng)的設(shè)備

2.payLoad.addBadge(1);

消息推送標(biāo)記數(shù),小紅圈中顯示的數(shù)字。服務(wù)器上作一個(gè)累計(jì),當(dāng)點(diǎn)擊就計(jì)數(shù)為了,如果沒(méi)有查看就一直累加。

3.String certificatePath= "/Users/wangjinhan/Desktop/最近技術(shù)研究/java后臺(tái)推送程序/developcm.p12";

證書(shū)的路徑,不能出錯(cuò)

4.String certificatePassword= "";

導(dǎo)出證書(shū)設(shè)置的密碼,沒(méi)有設(shè)置密碼,就如上

這樣就可以推送了。

***********************/


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI