ios消息推送服务器端程序,iOS消息推送实现过程记录(示例代码)

客户端代码:链接地址

这里记录下iOS消息推送实现的全过程

首先,申请秘钥。

006_6e7_8ce.jpg

之后进入链接地址开发者,当然你得有啊!!!!!

点击这里

007_b9f_5c4.jpg

如图:

008_a1c_8ce.jpg

下面实现创建推送证书(和开发证书不一样)

009_bf4_182.jpg

接上图:

010_5cd_c0d.jpg

下图:

011_d23_9ed.jpg

第一步完:

012_600_33a.jpg

为证书添加推送功能:

013_baf_d6d.jpg

点击之后的效果:

014_4d8_b18.jpg

点击之后

015_1d4_f95.jpg

016_d01_510.jpg

017_dd0_10e.jpg

018_270_359.jpg

到现在我们已经有俩个证书了,aps_development.cer 和CertificateSigningRequest.certSigningRequest。

下面的步骤比较关键。我们需要把机器中的之前的证书清理干净,如果不清理干净的画会出现如下错误:

Error Domain=NSCocoaErrorDomain Code=3000 "未找到应用程序的“aps-environment”的权利字符串" UserInfo=0x17007d6c0 {NSLocalizedDescription=未找到应用程序的“aps-environment”的权利字符串}

这个错误大概的意思就是证书不匹配的意思。

019_500_43e.jpg

清理之后,我们点击

020_5b0_357.jpg

将推送证书添加进去。

Capabilities中打开Push Notifications 开关

在XCode7中这里的开关不打开,推送也是可以正常使用的,但是在XCode8中,这里的开关必须要打开,不然会报错:

Error Domain=NSCocoaErrorDomain Code=3000 "未找到应用程序的“aps-environment”的授权字符串" UserInfo={NSLocalizedDescription=未找到应用程序的“aps-environment”的授权字符串}

a8c4fbd83df8178c8da06db22a9dec03.png

之后我们导出一个可以供服务器端使用的。

021_604_136.jpg

022_48a_054.jpg

以下代码来着网上的活雷锋贡献。

下面附上客户端代码:

- (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];returnYES;

}-(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 *)application

didReceiveRemoteNotification:(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 classPushDemo {public static voidmain(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 = newPayLoad();

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();

}

}

}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值