考虑到我在iPhone上收到推送通知.
怎么了:
谢谢你的回答
我尝试制作推送通知服务器.我通过telnet连接到ssl://gateway.sandbox.push.apple.com:2195.
telnet gateway.sandbox.push.apple.com 2195
Trying 17.172.232.229...
Connected to gateway.sandbox.push-apple.com.akadns.net.
Escape character is '^]'.
Run Code Online (Sandbox Code Playgroud)
我的*.pem还可以(我在另一台服务器上使用它).我在另一台服务器上使用SAME项目,它在那里工作,但其他服务器上的克隆没有.
我得到这些错误:
Warning: stream_socket_client() [function.stream-socket-client]: SSL operation failed with code 1. OpenSSL Error messages: error:14094415:SSL routines:SSL3_READ_BYTES:sslv3 alert certificate expired in /var/www/try.php on line 69
Warning: stream_socket_client() [function.stream-socket-client]: Failed to enable crypto in /var/www/try.php on line 69
Warning: stream_socket_client() [function.stream-socket-client]: unable to connect to ssl://gateway.sandbox.push.apple.com:2195 (Unknown error) in /var/www/try.php on line 69
Run Code Online (Sandbox Code Playgroud)
证书未过期,它适用于其他服务器,日期相同.
有人知道错误是什么吗?
我继续努力
Apache/2.2.9 (Debian) PHP/5.2.17-0.dotdeb.0 with Suhosin-Patch mod_ssl/2.2.9 OpenSSL/0.9.8g
Run Code Online (Sandbox Code Playgroud)
编辑:似乎,在不同的服务器上使用相同的证书不起作用.也许这被Apples服务器阻止了.
我将在我的应用程序上激活APNS,所以我对以下内容感到有些困惑.
这对我来说很棒.提前致谢.
是否可以在单击一个推送通知时从通知中心删除推送通知并启动应用程序?
大多数应用似乎都会留下通知.我读到另一个问题:
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
Run Code Online (Sandbox Code Playgroud)
可能会工作,但它不适合我.
一旦点击,Facebook应用程序肯定会删除推送通知.
notifications apple-push-notifications ios notificationcenter
我试图做的推送通知我的应用程序和以下链接 http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12
我的系统已经成功连接到telnet,但是当我输入连接ssl证书和私钥的查询时,发现错误
$ openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key.pem
unable to load client certificate private key file
1301:error:0906D06C:PEM routines:PEM_read_bio:no start line:/SourceCache/OpenSSL098/OpenSSL098-44/src/crypto/pem/pem_lib.c:648:Expecting: ANY PRIVATE KEY
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我什么类型的错误以及它的解决方案是什么?
提前致谢
上周我在这里发了一个问题,在那里我解释了当我按下刷新按钮时我的Xcode崩溃的原因.然而这个问题因为偏离主题而被关闭,但我真的不明白为什么.(Stackoverflow应提供有关此主题的更多信息)
但是我仍然遇到了这个问题而且我无法通过推送通知运行我的应用程序因为我认为我正在使用旧的配置文件而我无法刷新它们而不会导致Xcode崩溃!
我已经使用推送通知创建了多个应用程序,因此我知道该过程但仍然收到错误:
did Fail To Register For Remote Notifications With Error: Error Domain=NSCocoaErrorDomain Code=3000 "no valid 'aps-environment' entitlement string found for application" UserInfo=0x2340a0 {NSLocalizedDescription=no valid 'aps-environment' entitlement string found for application}
Run Code Online (Sandbox Code Playgroud)
有谁知道我的Xcode崩溃的原因以及如何解决这个问题?谢谢.
如果您正在考虑关闭此问题,请发表评论,以便我知道为什么这个问题已经结束.
xcode objective-c apple-push-notifications provisioning-profile
我的服务器只运行一个发送推送通知的版本,它有我的生产(发布)推送证书.
如何使用相同的生产证书在我的调试设备上测试通知并调试版本?
我的设备正在发送令牌,但是当我尝试发送真实的推送通知时,Apple服务器返回状态8错误,这意味着设备令牌不正确.
我正在列出为我的本地通知按下的操作,但有没有办法确定用户何时解除通知?
这是我在AppDelegate中听我的动作的方式,但是解雇并没有解雇这个问题:
func application(application: UIApplication, handleActionWithIdentifier identifier: String?, forLocalNotification notification: UILocalNotification, completionHandler: () -> Void) {
var actionName: String? = nil
if let identifier = identifier {
switch identifier {
case "snoozeAction":
actionName = "snoozeActionTapped"
break
default: break
}
if let name = actionName {
NSNotificationCenter.defaultCenter().postNotificationName(name, object: nil)
}
}
completionHandler()
}
Run Code Online (Sandbox Code Playgroud) 使用较新的Firebase云消息传递与方法调配我成功地能够didReceiveRemoteNotification在我的应用程序被预先考虑时在我的应用程序委托中的方法中接收有效负载.然而,我没有获得任何类型的有效负载,didReceiveRemoteNotification并且当我的应用程序被后台化时不会被调用,尽管api响应消息已成功发送(见下文)
这是我发送到FCM api以触发推送通知的请求 https://fcm.googleapis.com/fcm/send
{
"to": "{valid-registration-token}",
"priority":"high", //others suggested setting priority to high would fix, but did not
"notification":{
"body":"Body3",
"title":"test"
}
}
Run Code Online (Sandbox Code Playgroud)
来自FCM的回应
{
"multicast_id": 6616533575211076304,
"success": 1,
"failure": 0,
"canonical_ids": 0,
"results": [
{
"message_id": "0:1468906545447775%a4aa0efda4aa0efd"
}
]
}
Run Code Online (Sandbox Code Playgroud)
这是我的appDelegate代码
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
Fabric.with([Crashlytics.self])
FIRApp.configure()
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.tokenRefreshNotification),
name: kFIRInstanceIDTokenRefreshNotification, object: nil)
return true
}
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : …Run Code Online (Sandbox Code Playgroud) apple-push-notifications ios firebase swift firebase-cloud-messaging
我们的应用使用Firebase手机验证.由于需要推送,App Store审核已拒绝该应用:
准则4.5.4 - 设计 - Apple站点和服务
我们注意到您的应用需要推送通知才能运行.
具体来说,我们注意到如果我们的设备上未启用"推送通知"设置,则在应用程序中输入我们的电话号码后会收到错误消息.
下一步
推送通知必须是可选的,并且必须获得用户同意才能在应用中使用.
他们还附上了描述Firebase错误的屏幕截图"需要为应用程序设置远程通知和后台提取[...]"
Firebase文档指出,电话验证功能绝对需要APN通知:https:
//firebase.google.com/docs/auth/ios/phone-auth
要使用电话号码身份验证,您的应用必须能够从Firebase接收APN通知.当您首次在设备上使用电话号码登录用户时,Firebase身份验证会向设备发送静音推送通知,以验证电话号码登录请求是否来自您的应用.(因此,电话号码登录无法在模拟器上使用.)
但是,App Store审核指南规定,为了使应用程序正常运行,不得要求推送通知:https://developer.apple.com/app-store/review/guidelines/
4.5.4应用程序无需推送通知即可运行,不得用于广告,促销或直接营销目的,也不得用于发送敏感的个人或机密信息.
用户需要在他们可以使用该应用程序之前登录(该应用程序是关于向您的客人发送数字GIF邀请并共享照片),这就是为什么推送通知基本上是应用程序运行所必需的,如果登录方法是Firebase手机AUTH.
我们已经对应用程序进行了大量测试,并且在启用推送通知时,身份验证可以顺利运行(在真实设备上,在分发Ad Hoc构建中使用生产环境和使用沙箱环境进行开发构建).
想想看,App Review团队甚至如何禁用推送通知?通知中心设置不会停止实际推送,它只是不显示它们.
我们已经通过此设置进行了测试,并且firebase phone auth工作正常,推送仍然按预期进行.
我对这个问题感到非常惊讶,因为Firebase是一个巨大的服务提供商.有没有人遇到过这个问题?是否有计划删除APN对电话验证的要求?是否可能有其他方式使用Firebase手机auth而不推?
app-store apple-push-notifications ios firebase firebase-analytics