您好,登錄后才能下訂單哦!
先看看客戶端:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//消息推送支持的類(lèi)型
UIRemoteNotificationType types =
(UIRemoteNotificationTypeBadge
|UIRemoteNotificationTypeSound
|UIRemoteNotificationTypeAlert);
//注冊(cè)消息推送
[[UIApplication sharedApplication] registerForRemoteNotificationTypes: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 alloc] initWithTitle:@"溫馨提示"
message:content
delegate:nil
cancelButtonTitle:@"確定"
otherButtonTitles:nil];
[alert show];
}
進(jìn)入蘋(píng)果開(kāi)發(fā)網(wǎng)站:
選中帶有推送服務(wù):
創(chuàng)建成功之后,下載證書(shū)雙擊,在鑰匙串就能看到:
右鍵導(dǎo)出p12文件,可以設(shè)置密碼,也可以不設(shè),一般不設(shè)置。以上證書(shū)就OK了。
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è)置密碼,就如上
這樣就可以推送了。
***********************/
免責(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)容。