iOS 远程推送 (swift +java后台)

 首先吐槽下 苹果的网站,卡得要死进个网页几十分钟! 

    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  代码   注册推送

[objc]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. func registerForPushNotifications(application: UIApplication) {  
  2.        print("注册推送")  
  3.       let notificationSettings = UIUserNotificationSettings(  
  4.           forTypes: [.Badge.Sound.Alert], categories: nil)  
  5.       application.registerUserNotificationSettings(notificationSettings)  
  6.   }  

注册成功  输出 token

[objc]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {  
  2.        let tokenChars = UnsafePointer<CChar>(deviceToken.bytes)  
  3.        var tokenString = ""  
  4.          
  5.        for i in 0..<deviceToken.length {  
  6.            tokenString += String(format: "%02.2hhx", arguments: [tokenChars[i]])  
  7.        }  
  8.          
  9.        print("Device Token:", tokenString)  
  10.    }  
失败  

[objc]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) {  
  2.     print("Failed to register:", error)  
  3. }  


收到推送的处理
[objc]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {  
  2.       print("saasasas",userInfo)  
  3.   }  



java  后台  

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package kkkk;  
  2.   
  3.   
  4.   
  5. import java.util.ArrayList;    
  6. import java.util.List;    
  7.     
  8.     
  9.     
  10.     
  11. import org.apache.commons.lang.StringUtils;    
  12.     
  13. import javapns.devices.Device;    
  14. import javapns.devices.implementations.basic.BasicDevice;    
  15. import javapns.notification.AppleNotificationServerBasicImpl;    
  16. import javapns.notification.PushNotificationManager;    
  17. import javapns.notification.PushNotificationPayload;    
  18. import javapns.notification.PushedNotification;    
  19.     
  20.     
  21.     
  22. public class AA    
  23. {    
  24.     public static void main(String[] args) throws Exception    
  25.     {    
  26.         String deviceToken = "4042257157b535b3ac2fb9cf35dadadaadaa26855377e3c18da10feb2";    
  27.         String alert = "收到通知了";//push的内容    
  28.         int badge = 3;//图标小红圈的数值    
  29.         String sound = "default";//铃音    
  30.     
  31.         List<String> tokens = new ArrayList<String>();    
  32.         tokens.add(deviceToken);    
  33.         String certificatePath = "D:/push.p12";       
  34.         String certificatePassword = "hzy001ss'019";//此处注意导出的证书密码不能为空因为空密码会报错    
  35.         boolean sendCount = true;    
  36.   
  37.         try    
  38.         {    
  39.             PushNotificationPayload payLoad = new PushNotificationPayload();    
  40.             payLoad.addAlert(alert); // 消息内容    
  41.             payLoad.addBadge(badge); // iphone应用图标上小红圈上的数值    
  42.                
  43.             if (!StringUtils.isBlank(sound))    
  44.             {    
  45.                 payLoad.addSound(sound);//铃音    
  46.             }    
  47.             PushNotificationManager pushManager = new PushNotificationManager();    
  48.             //true:表示的是产品发布推送服务 false:表示的是产品测试推送服务    
  49.             pushManager.initializeConnection(new AppleNotificationServerBasicImpl(certificatePath, certificatePassword, false));    
  50.             List<PushedNotification> notifications = new ArrayList<PushedNotification>();    
  51.               
  52.             System.out.println("dadsadsadadada");  
  53.             // 发送push消息    
  54.             if (sendCount)    
  55.             {    
  56.                 Device device = new BasicDevice();    
  57.                 device.setToken(tokens.get(0));    
  58.                 PushedNotification notification = pushManager.sendNotification(device, payLoad, true);    
  59.                 notifications.add(notification);    
  60.                 System.out.println("发生");  
  61.             }    
  62.             else    
  63.             {    
  64.                 List<Device> device = new ArrayList<Device>();    
  65.                 for (String token : tokens)    
  66.                 {    
  67.                     device.add(new BasicDevice(token));    
  68.                 }    
  69.                 notifications = pushManager.sendNotifications(payLoad, device);    
  70.             }                
  71.             pushManager.stopConnection();    
  72.         }    
  73.         catch (Exception e)    
  74.         {    System.out.println("AAAAAAAAAAAAAAAAAAAAAA");  
  75.             e.printStackTrace();    
  76.         }    
  77.     }    
  78. }    
   



 代码很简单  主要是几个证书的  配置 麻烦  ,还有 苹果开发者中心 网太慢 !!  遇到的问题  服务端显示成功  而ios 未收到通知  ,检查了下 是 证书配置问题

打开 xode -> preferences  accounts  找到开发者账号下 

   




点设置  export deceloper accounts  导出账号证书  双击安装


然后 view details    删除无用的证书  下载 需要的那一个证书  安装  

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值