我试图在iOS 6教程:第1/2部分中运行Apple推送通知服务中的Ray Wenderlich教程.
我在本地目录中创建了AppID和SSL证书以及密钥和PEM文件.之后,我到了测试证书是否有效的步骤,我从这个本地目录调用了以下命令:
$ openssl s_client -connect gateway.sandbox.push.apple.com:2195
-cert PushChatCert.pem -key PushChatKey.pem
Run Code Online (Sandbox Code Playgroud)
这产生了很多输出.在输出的中间是以下内容:
verify error:num=20:unable to get local issuer certificate
verify return:0
Run Code Online (Sandbox Code Playgroud)
这是一个错误,还是一个错误的测试?如果是错误,原因是什么或者您建议解决什么?
这是完整的输出(减去证书数据):
Enter pass phrase for PushChatKey.pem:
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
---
Certificate chain
0 s:/C=US/ST=California/L=Cupertino/O=Apple Inc./OU=iTMS Engineering/CN=gateway.sandbox.push.apple.com
i:/C=US/O=Entrust, Inc./OU=www.entrust.net/rpa is incorporated by reference/OU=(c) 2009 Entrust, Inc./CN=Entrust Certification Authority - L1C
1 s:/C=US/O=Entrust, …Run Code Online (Sandbox Code Playgroud) 我想知道我们是否可以在模拟器上接收推送通知.此外,我想要这样的事情告诉我是否可能.应用程序打开未注册的推送通知和应用程序终止注册推送通知.
我已经启用了APNS创建了应用程序ID,并且我配置了开发和生产证书
现在,当我创建权利时,它始终显示开发即使我将配置配置文件更改为iTunes部署,权限也显示为开发
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>aps-environment</key>
<string>development</string>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud) 我已经咨询过很多来源,但仍无法解决这个问题.
http://code.google.com/p/apns-php/wiki/CertificateCreation
基本上,在我从iOS Provisioning Portal> App IDS(选择启用Apple推送通知服务)下载开发推送SSL证书后,我双击证书(文件名aps_development.cer)将其打开,Keychain打开.然后我在左侧面板上选择"登录"和"证书".在右侧面板上,我看到"Apple Development IOS Push Services:...",到目前为止我所咨询的所有说明都告诉我通过单击名称旁边的箭头来"展开"此选项,以显示私钥,但是此证书没有扩展选项.任何人都可以帮我找到这个私钥吗?我下载了错误的证书吗?
谢谢
我已经实现了静默推送通知,但我注意到了一些奇怪的行为.静默推送通知通过以下方式处理:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
Run Code Online (Sandbox Code Playgroud)
如果设备正在充电(即连接电缆)和/或我的应用程序是前台,则似乎只接收静音推送消息.
如果我断开设备与充电器(或Mac)的连接,则除非应用程序是前台,否则不再接收静音推送通知.
在这两种情况下,我都会得到非静音推送通知.
如果我再次插入USB电缆,那么无论应用程序是前景还是后台,我都会收到预期的行为并收到静音推送通知.
我正在使用UILocalNotification,所以我知道收到了什么.
连接设备一切正常的事实表明我的静音推送通知配置正确,并且应用程序具有在plist中设置的正确背景模式等.
在iPhone 5s,6和iPad 2上都可以重复此行为,所有这些都运行IOS 8或8.1.
还有其他人经历过这个吗?它应该很容易重现.为什么将设备插入充电器的简单行为会改变接收静音推送通知的能力?
iphone background apple-push-notifications ios silent-notification
这样的问题已被多次询问,但我有一些特定的情况正在发生.
当我的应用程序处于活动状态并且我收到PUSH消息时,我成功地能够解析自定义有效负载等.
但是当我的应用程序在后台并且PUSH到达时,用户必须单击"查看/打开"按钮才能获得didReceiveRemoteNotification被叫,然后didFinishLaunchingWithOptions被调用.
我需要让我的应用程序决定是否必须在后台提示用户使用UIAlert,或者根据某些本地设置禁止推送消息.
任何帮助,将不胜感激,
我正在从php作业应用程序向iphone发送推送通知.我正在发送关于新工作的推送通知.当用户点击推送通知视图弹出时,用户可以重定向到设备中的特定作业.
我的意思是我想知道我可以发送任何自定义数据与推送通知,如jobId,其他东西....以便Iphone结束可以检索并显示特定的工作?
谢谢.
我想在通知栏中清除我的本地通知.为了实现这一点,我想使用静默推送通知.所以我想确认设备何时收到它以及我可以用它做什么?
我的印象是,当您使用开发配置文件构建应用程序时,只有指定的开发人员才能将该版本部署到手机上.
但我刚刚使用Xcode Organizer部署了一个使用开发配置文件到手机的版本,即使我不是该配置文件的有效开发人员之一.我的一位同事甚至没有安装Xcode,他的手机使用iTunes做了同样的事情.
在这种情况下,为什么不使用开发配置文件将您的应用程序分发给您的QA团队,而不是临时分发?
编辑:请在回答之前仔细阅读该部分.我不是在问一个基本的"这是怎么回事"的问题.我已经做了很多开发,临时和应用程序商店构建,现在我发现我似乎做了一些错误的假设.
iphone apple-push-notifications provisioning-profile ios-provisioning
我正在尝试实现后台推送通知处理,但是我在确定用户是否从发送的推送通知中打开应用程序时遇到了问题,而不是从图标打开它.
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
//************************************************************
// I only want this called if the user opened from swiping the push notification.
// Otherwise I just want to update the local model
//************************************************************
if(applicationState != UIApplicationStateActive) {
MPOOpenViewController *openVc = [[MPOOpenViewController alloc] init];
[self.navigationController pushViewController:openVc animated:NO];
} else {
///Update local model
}
completionHandler(UIBackgroundFetchResultNewData);
}
Run Code Online (Sandbox Code Playgroud)
使用此代码,无论用户如何打开应用程序,应用程序都会打开MPOOpenViewController.我怎样才能使视图控制器只有在他们通过刷通知打开应用程序时才会被推送?
使用相同的代码,这适用于iOS 6,但使用新的iOS 7方法,它的行为并不像我想要的那样.
编辑:我正在尝试在iOS 7上运行应用程序,我们不支持iOS 7之前的任何版本.我在方法的iOS 6版本中使用了相同的确切代码(没有完成处理程序)并且它表现得很好我希望它的方式.你要刷通知,这将被调用.如果从图标打开,则永远不会调用该方法.
push-notification apple-push-notifications uiapplicationdelegate ios ios7
ios ×5
iphone ×5
background ×1
certificate ×1
ios4 ×1
ios7 ×1
keychain ×1
objective-c ×1
openssl ×1
php ×1
ssl ×1