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)
}
使用以下代码创建了配置文件,但是当我尝试 运行 开发测试时,我遇到了 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)
}