这是概述.
我需要将推送通知添加到iPhone应用程序.服务器端是c#中的ASP.NET.
我想要的是一些指导工作.然后,我将发布iPhone项目和ASP.NET Web应用程序的通用代码以及逐步说明,以便其他人可以学习.
这是我的理解:
所以要开发添加,这里是件:
iPhone注册码
将iPhone注册码发送到服务器并保存到DB的代码(这很简单,我已经有了这些部分).
服务器端APNS联系人代码在c#中.这还包括如何使用Apple Developer网站上生成的证书.
此外,有效负载是否可以作为多项选择问题,可以通过发送回服务器的结果来回答?
在此先感谢您的帮助.我将把它转成其他人的教程.
我想知道是否有可能在初次下降之后强制推出"XXXXX想要在应用程序内发送推送通知"弹出窗口.用例如下:
用户安装应用程序,获取有关推送通知的警报,并拒绝,因为他们还不知道/不信任该应用程序.
他们使用该应用程序并在应用程序内主动请求在发生事件时收到警报(例如,他们想要购买的东西已售罄,因此他们希望在库存恢复时收到警报).
因此,现在用户已要求应用程序通知他们特定的内容,但在操作系统级别禁用了推送通知.
因此,如果用户请求提醒,但我检测到他们在首次运行时拒绝提醒,我需要通知他们并让他们打开推送通知以使提醒工作.
理想情况下,我想强制"XXXX想发送推送通知警报"此时(自安装应用程序以来第二次).
我想计划b将向他们展示我自己的消息,告诉他们他们必须进入他们的系统设置并手动将其重新打开以接收他们想要的警报.这远非理想.
任何帮助,将不胜感激.谢谢.
在官方文档中,您可以找到以下信息:
每个推送通知包括有效载荷.有效负载包含有关系统应如何提醒用户以及您提供的任何自定义数据的信息.通知有效负载允许的最大大小为256字节 ; Apple推送通知服务拒绝任何超出此限制的通知.
但是在WWDC 14中我们可以看到这个截图:

我想知道苹果公司是否有关于推送通知大小限制的正式声明.我测试了它,并且更大的256字节工作,但文档说它不应该.有人可以确认或否认远程通知的大小吗?
Apple最近为APNS添加了一种新的身份验证方法(Apple推送通知身份验证密钥(Sandbox&Production)).
下载的密钥是.p8带有私钥的文件:
$ cat APNSAuthKey_3HHEB343FX.p8
-----BEGIN PRIVATE KEY-----
MIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBH...Already.Revoked...lHEjCX1v51W
-----END PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)
我使用旧方法使用APNs消息 - 将它们添加到钥匙串,要求证书并使用OpenSSL发送消息gateway.production.push.apple.com:2195.
如何使用新格式使用标准CLI Linux工具(OpenSSL,Python等)发送推送通知?
当我试图打开APN连接时出现全局泄漏错误时,我试图对Apple推送通知库进行单元测试.
这是我的配置错误还是node-apn或mocha中的错误?
我不确定我理解checkGlobals正在做什么......它只是检查是否正在设置任何全局变量?
0) Feed "before all" hook:
Error: global leak detected: hasCert
at Runner.checkGlobals (/usr/lib/node_modules/mocha/lib/runner.js:96:21)
at Runner.<anonymous> (/usr/lib/node_modules/mocha/lib/runner.js:41:44)
at Runner.emit (events.js:64:17)
at /usr/lib/node_modules/mocha/lib/runner.js:159:12
at Hook.run (/usr/lib/node_modules/mocha/lib/runnable.js:114:5)
at next (/usr/lib/node_modules/mocha/lib/runner.js:157:10)
at Array.<anonymous> (/usr/lib/node_modules/mocha/lib/runner.js:165:5)
at EventEmitter._tickCallback (node.js:126:26)
Run Code Online (Sandbox Code Playgroud) unit-testing mocha.js push-notification apple-push-notifications node.js
通过传递.pem文件使用OpenSSL :: PKey :: RSA模块构建公钥时,响应的原因是什么:
OpenSSL::PKey::RSAError: Neither PUB key nor PRIV key:: nested asn1 error
from /Users/Matt/projects/placepop/lib/apn.rb:48:in `initialize'
from /Users/Matt/projects/placepop/lib/apn.rb:48:in `new'
from /Users/Matt/projects/placepop/lib/apn.rb:48:in `open'
from (irb):1
Run Code Online (Sandbox Code Playgroud)
这是来源:
cert = File.join(rails_root, 'config', 'apns', 'sandbox-cert.pem')
APN_CONFIG = { :delivery => {
:host => 'gateway.sandbox.push.apple.com',
:cert => cert,
:passphrase => "",
:port => 2195 },
:feedback => {
:host => 'feedback.sandbox.push.apple.com',
:port => 2196,
:passphrase => "",
:cert => cert} }
options = APN_CONFIG[:delivery].merge(options)
cert = File.read(options[:cert])
ctx = OpenSSL::SSL::SSLContext.new
ctx.key = OpenSSL::PKey::RSA.new(cert, …Run Code Online (Sandbox Code Playgroud) 最近我的申请在上传时遭到拒绝.Apple审核小组称我的应用程序是"缺少推送通知权限"
这是他们提供的信息:
缺少推送通知权利 - 您的应用程序向Apple推送通知服务注册,但应用程序签名的权利不包括所需的"aps-environment"权利.确保您已为此应用启用了推送通知服务,并且您已下载包含"aps-environment"权利的分发配置文件.
我的应用程序的早期版本曾经有推送通知,我的应用程序二进制文件从未因此而被拒绝.我该怎么办?
设备令牌如何从沙箱到生产模式各不相同?
我想我已经将一些设备令牌锁定在生产模式中,并且它们无法从开发中推出.
关于我如何检查的任何想法?
与此问题类似:如何在applicationDidBecomeActive上访问远程推送通知数据?
但不同的是,当您进入时applicationDidBecomeActive,如果您单击了应用程序图标而不是推送通知,您如何访问通知数据.
流程是:如果你点击push notification,然后didReceiveRemoteNotification将被触发,但如果你点击原来的应用程序图标,只applicationDidBecomeActive将被触发,didReceiveRemoteNotification将不会被调用.
我正在寻找后一种情况,以便如何访问推送通知数据.
(两种情况都假设应用程序处于后台并且尚未被杀死.)
我正在开发一个包含大量遗留代码的大型应用程序.目前 - 有一个实现:
- (void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
Run Code Online (Sandbox Code Playgroud)
问题是它仅在应用程序位于前台或用户在应用程序处于后台时点击通知时调用.我试图实现:
- (void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
Run Code Online (Sandbox Code Playgroud)
但该应用程序的行为相同.在任何情况下 - 当应用程序在后台时,不会调用此方法.可能是什么问题呢?