首先吐槽下 苹果的网站,卡得要死进个网页几十分钟!
1.找到钥匙串访问->证书助手->从证书颁发机构请求证书,填写电子邮件和地址然后 保存到磁盘 得到 CertificateSigningRequest.certSigningRequest。
2.创建app ID
勾选 push notifications
create certification
选择上一部生成的的 密钥 CertificateSigningRequest.certSigningRequest。 下一步生成 证书 aps_development.cer
双击证书 安装
找到刚刚安装的证书 右键导出 选择 p12 类型 然后 输入密码 这个 文件 在 java 上要用到
然后 找到provisioning Profiles 生成 调试证书 appid 填写 正确 选择好 调试的设备 导出
xinjiaxiao.mobileprovision
双击 安装
code 新建项目
bundle identifiter 写正确
打开远程通知 和允许后台通知
配置 provisioning profile
iOS 代码 注册推送
- func registerForPushNotifications(application: UIApplication) {
- print("注册推送")
- let notificationSettings = UIUserNotificationSettings(
- forTypes: [.Badge, .Sound, .Alert], categories: nil)
- application.registerUserNotificationSettings(notificationSettings)
- }
注册成功 输出 token
- func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
- let tokenChars = UnsafePointer<CChar>(deviceToken.bytes)
- var tokenString = ""
-
- for i in 0..<deviceToken.length {
- tokenString += String(format: "%02.2hhx", arguments: [tokenChars[i]])
- }
-
- print("Device Token:", tokenString)
- }
失败
- func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) {
- print("Failed to register:", error)
- }
收到推送的处理
- func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {
- print("saasasas",userInfo)
- }
java 后台
- package kkkk;
-
-
-
- import java.util.ArrayList;
- import java.util.List;
-
-
-
-
- import org.apache.commons.lang.StringUtils;
-
- import javapns.devices.Device;
- import javapns.devices.implementations.basic.BasicDevice;
- import javapns.notification.AppleNotificationServerBasicImpl;
- import javapns.notification.PushNotificationManager;
- import javapns.notification.PushNotificationPayload;
- import javapns.notification.PushedNotification;
-
-
-
- public class AA
- {
- public static void main(String[] args) throws Exception
- {
- String deviceToken = "4042257157b535b3ac2fb9cf35dadadaadaa26855377e3c18da10feb2";
- String alert = "收到通知了";
- int badge = 3;
- String sound = "default";
-
- List<String> tokens = new ArrayList<String>();
- tokens.add(deviceToken);
- String certificatePath = "D:/push.p12";
- String certificatePassword = "hzy001ss'019";
- boolean sendCount = true;
-
- try
- {
- PushNotificationPayload payLoad = new PushNotificationPayload();
- payLoad.addAlert(alert);
- payLoad.addBadge(badge);
-
- if (!StringUtils.isBlank(sound))
- {
- payLoad.addSound(sound);
- }
- PushNotificationManager pushManager = new PushNotificationManager();
-
- pushManager.initializeConnection(new AppleNotificationServerBasicImpl(certificatePath, certificatePassword, false));
- List<PushedNotification> notifications = new ArrayList<PushedNotification>();
-
- System.out.println("dadsadsadadada");
-
- if (sendCount)
- {
- Device device = new BasicDevice();
- device.setToken(tokens.get(0));
- PushedNotification notification = pushManager.sendNotification(device, payLoad, true);
- notifications.add(notification);
- System.out.println("发生");
- }
- else
- {
- List<Device> device = new ArrayList<Device>();
- for (String token : tokens)
- {
- device.add(new BasicDevice(token));
- }
- notifications = pushManager.sendNotifications(payLoad, device);
- }
- pushManager.stopConnection();
- }
- catch (Exception e)
- { System.out.println("AAAAAAAAAAAAAAAAAAAAAA");
- e.printStackTrace();
- }
- }
- }
代码很简单 主要是几个证书的 配置 麻烦 ,还有 苹果开发者中心 网太慢 !! 遇到的问题 服务端显示成功 而ios 未收到通知 ,检查了下 是 证书配置问题
打开 xode -> preferences accounts 找到开发者账号下
点设置 export deceloper accounts 导出账号证书 双击安装
然后 view details 删除无用的证书 下载 需要的那一个证书 安装