Swift 推送 APN 原生

Swift Push APN native

使用以下代码创建了配置文件,但是当我尝试 运行 开发测试时,我遇到了 llbd 并且应用程序崩溃了。

 func application(application: UIApplication, 
 didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) 
 -> Bool {


// Override point for customization after application launch.



var type = UIUserNotificationType.Badge | UIUserNotificationType.Alert 
| UIUserNotificationType.Sound

var setting = UIUserNotificationSettings(forTypes: type, categories: 
nil)
UIApplication.sharedApplication().registerUserNotificationSettings(setting)

UIApplication.sharedApplication().registerForRemoteNotifications()



return true

 }



func application(application: UIApplication,    
didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {

println(deviceToken)

}



func application(application: UIApplication,   
didFailToRegisterForRemoteNotificationsWithError error: NSError) {

println(error)

 }

能够根据 LastMove 的见解显示推送弹出窗口。但是我在连接到 Push 网络时遇到错误。第一次测试我收到

 Trying 17.172.232.45...
  Connected to gateway.sandbox.push-apple.com.akadns.net

但是当尝试 运行 php 我得到

 Failed to connect: 111 Connection refused 

而且在终端测试中我看到:

 openssl s_client -connect gateway.sandbox.push.apple.com:2195 
 CONNECTED(00000003)
 depth=1 /C=US/O=Entrust, Inc./OU=www.entrust.net/rpa is incorporated 
 by reference/OU=(c) 2009 Entrust, Inc./CN=Entrust Certification   
 Authority - L1C
 verify error:num=20:unable to get local issuer certificate
 verify return:0
  6236:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake   
 failure:/SourceCache/OpenSSL098
 /OpeJamesJaJamJJJJJJJJJJJJJJaJamJamesJamesJameJamJaJJJJaJaJamess-MacBoJamJa

我认为你的问题是关于 iOS 7/8。 您用于推送通知的 api 是新的。 它与 iOS 7 不兼容。 如果您需要定位 iOS 7,请使用旧方法。 或更好:

// Register for Push Notitications, if running iOS 8
if application.respondsToSelector("registerUserNotificationSettings:") {

  let types:UIUserNotificationType = (.Alert | .Badge | .Sound)
  let settings:UIUserNotificationSettings = UIUserNotificationSettings(forTypes: types, categories: nil)

  application.registerUserNotificationSettings(settings)
  application.registerForRemoteNotifications()

} else {      
  // Register for Push Notifications before iOS 8
  application.registerForRemoteNotificationTypes(.Alert | .Badge | .Sound)
}