标签: apple-push-notifications

iOS - 使用APNS处理推送通知

考虑到我在iPhone上收到推送通知.

怎么了:

  1. 如果应用程序已启动:是否有办法获取有效负载?我在屏幕上看到通知了吗?
  2. 如果应用程序未启动,是否有办法获取有效负载?

谢谢你的回答

iphone apple-push-notifications ios

15
推荐指数
1
解决办法
5798
查看次数

APNS ssl://gateway.sandbox.push.apple.com:2195连接失败

我尝试制作推送通知服务器.我通过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服务器阻止了.

ssl push apple-push-notifications

15
推荐指数
2
解决办法
8万
查看次数

供应门户上的开发和分配供应配置文件之间的区别?

我将在我的应用程序上激活APNS,所以我对以下内容感到有些困惑.

  1. Provisioning Portal上的开发和分发配置文件之间的基本区别是什么
  2. 我将激活APNS(Apple推送通知服务)到我将要在Apple Store上传的应用程序.我应该用什么?

这对我来说很棒.提前致谢.

iphone xcode apple-push-notifications ios

15
推荐指数
1
解决办法
2万
查看次数

单击时从通知中心删除通知

是否可以在单击一个推送通知时从通知中心删除推送通知并启动应用程序?

大多数应用似乎都会留下通知.我读到另一个问题:

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0]; 
Run Code Online (Sandbox Code Playgroud)

可能会工作,但它不适合我.

一旦点击,Facebook应用程序肯定会删除推送通知.

notifications apple-push-notifications ios notificationcenter

15
推荐指数
1
解决办法
2万
查看次数

连接SSL证书和私钥之间的终端错误,以建立安全连接:

我试图做的推送通知我的应用程序和以下链接 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)

任何人都可以告诉我什么类型的错误以及它的解决方案是什么?

提前致谢

openssl objective-c apple-push-notifications

15
推荐指数
3
解决办法
2万
查看次数

刷新配置文件时Xcode崩溃

上周我在这里发了一个问题,那里我解释了当我按下刷新按钮时我的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

15
推荐指数
1
解决办法
2125
查看次数

如何让我的调试应用程序版本在iOS上接收生产推送通知?

我的服务器只运行一个发送推送通知的版本,它有我的生产(发布)推送证书.

如何使用相同的生产证书在我的调试设备上测试通知并调试版本?

我的设备正在发送令牌,但是当我尝试发送真实的推送通知时,Apple服务器返回状态8错误,这意味着设备令牌不正确.

push-notification apple-push-notifications ios ios7 xcode5

15
推荐指数
3
解决办法
9253
查看次数

如何在iOS中收听通知被驳回的事件?

我正在列出为我的本地通知按下的操作,但有没有办法确定用户何时解除通知?

这是我在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)

apple-push-notifications ios uilocalnotification ios8

15
推荐指数
1
解决办法
2223
查看次数

Firebase云消息传递iOS:无后台推送通知

使用较新的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

15
推荐指数
1
解决办法
1万
查看次数

由于Firebase手机验证而导致App Store拒绝

我们的应用使用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

15
推荐指数
2
解决办法
4093
查看次数