iOS不使用第三方平台,发送推送消息
2014-09-04 14:40
393 查看
iOS不使用第三方平台,发送推送消息
先看看客户端:需要关注两个点:一是代码部分的DeviceToken获取,且看代码
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ //消息推送支持的类型 UIRemoteNotificationType types = (UIRemoteNotificationTypeBadge |UIRemoteNotificationTypeSound |UIRemoteNotificationTypeAlert); //注册消息推送 [[UIApplication sharedApplication] registerForRemoteNotificationTypes:types]; // Override point for customization after application launch. return YES;} //获取DeviceToken成功- (void)application:(UIApplication *)applicationdidRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{ NSString *pushToken = [[[[deviceToken description] stringByReplacingOccurrencesOfString:@"<" withString:@""] stringByReplacingOccurrencesOfString:@">" withString:@""] stringByReplacingOccurrencesOfString:@" " withString:@""] ; NSLog(@"DeviceToken:%@",pushToken); //这里进行的操作,是将Device Token发送到服务端}注:这里用到一个小技巧,怎样把NSData数据内容里面的“<”,">"," "给去掉,得到一个有效的DeviceToken。//注册消息推送失败- (void)application:(UIApplication *)applicationdidFailToRegisterForRemoteNotificationsWithError:(NSError *)error{ NSLog(@"Register Remote Notifications error:{%@}",[error localizedDescription]);} //处理收到的消息推送- (void)application:(UIApplication *)applicationdidReceiveRemoteNotification:(NSDictionary *)userInfo{ NSLog(@"Receive remote notification : %@",userInfo); NSDictionary *aps = [userInfo valueForKey:@"aps"]; NSString *content = [aps valueForKey:@"alert"]; //推送显示的内容 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"温馨提示" message:content delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil]; [alert show];}二是制作带有推送消息的证书
进入苹果开发网站:选中带有推送服务:
创建成功之后,下载证书双击,在钥匙串就能看到:
右键导出p12文件,可以设置密码,也可以不设,一般不设置。以上证书就OK了。
下面来看看java写的服务器代码:
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);//消息推送标记数,小红圈中显示的数字。
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/最近技术研究/java后台推送程序/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();
}}
}/***********************代码有几点要注意:1.String deviceToken = "56378f94d620b0210a9228ea513a4ba2cbe61d0b29143116812da411009c0c9e";要发送到对应的设备2.payLoad.addBadge(1);消息推送标记数,小红圈中显示的数字。服务器上作一个累计,当点击就计数为了,如果没有查看就一直累加。3.String certificatePath= "/Users/wangjinhan/Desktop/最近技术研究/java后台推送程序/developcm.p12";证书的路径,不能出错4.String certificatePassword= "";导出证书设置的密码,没有设置密码,就如上这样就可以推送了。***********************/
相关文章推荐
- 使用第三方推送平台JPUSH推送消息到android手机
- .net平台借助第三方推送服务在推送Android,IOS消息(极光推送_V2版本)
- .net平台借助第三方推送服务在推送Android,IOS消息(极光推送_V3版本)最新
- iPhone消息推送机制(Push)实现及通过.net应用程序发送消息给ios应用程序
- IOS中使用到的常用的第三方开放平台
- .net平台推送ios消息
- .net平台推送ios消息
- 在SAE使用Apple Push Notification Service服务开发iOS应用, 实现消息推送
- python使用pyapns进行ios推送消息
- .net平台借助第三方推送服务在推送Android消息(极光推送)
- 使用OpenSSL发送IOS推送通知 Apple Push Notification
- iOS-在SAE使用Apple Push Notification Service实现消息推送
- 使用OpenSSL发送IOS推送通知 Apple Push Notification
- PHP版微信公共平台消息主动推送,突破订阅号一天只能发送一条信息限制
- PHP版微信公共平台消息主动推送,突破订阅号一天只能发送一条信息限制
- iPhone消息推送机制(Push)实现及通过.net应用程序发送消息给ios应用程序
- ios消息推送机制原理与实现-验证使用成功
- (转)在SAE使用Apple Push Notification Service服务开发iOS应用, 实现消息推送
- iOS及Android消息推送方案安装使用入门
- AIR中不使用ANE实现IOS消息推送