我们的应用程序使用APNS接收推送通知.但是,我们的客户声称他们的一些设备没有收到通知,并认为他们"必须"确保通知100%交付.但我已经在某处读过APNS不是100%可靠的,并且应该存在通知未交付的情况.
我目前对如何确保随时收到APNS感到恐慌.我已阅读的情况下,这可能APNS未送达(设备可能离线).但我们的测试表明即使设备在线(Wifi或3G),有时APNS也没有交付.
是否有任何特定案例可能无法提供APNS?或者我们(开发人员)可以使用代码来确保接收所有通知吗?我在代码中所做的只是将应用程序注册到远程通知并写入didRegisterForRemoteNotificationsWithDeviceToken,然后将设备令牌丢弃到我们的服务器.
任何帮助将不胜感激,因为如果他们的所有设备都没有收到APNS,我们的客户几乎会杀了我们!
我正在从php向ios发送推送通知.它工作正常,这是我的代码:
$passphrase = '';
$badge = 1;
$path = base_path('path/to/certificate.pem');
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', $path);
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
$fp = stream_socket_client(
'ssl://gateway.sandbox.push.apple.com:2195', $err,
$errstr, 60, STREAM_CLIENT_CONNECT | STREAM_CLIENT_PERSISTENT, $ctx
);
if (!$fp) {
self::SavePush($device_token, $message, $device_id, $device_type, $user_id, "pending", "normal", null);
}
//echo 'Connected to APNS' . PHP_EOL;
$body['aps'] = array(
'alert' => $message,
'badge' => $badge,
'sound' => 'default'
);
$payload = json_encode($body);
$msg = chr(0) . pack('n', 32) . pack('H*', $device_token) . pack('n', strlen($payload)) . …Run Code Online (Sandbox Code Playgroud) 我构建了获取推送通知的xcode应用程序,主要问题是推送通知对我来说非常关键.所以我想检查推送通知是否已经安装了应用程序的设备,我明白,如果iPhone没有互联网连接/ 3G推送通知没有到达设备.
如何检查设备是否收到通知?如何检查APNS是否成功发送推送通知?
如果推送通知没有发送到设备,我想发送短信,所以我想到通过推送通知打开通知事件的想法,并发送请求到我的服务器,以便我可以知道推送通知是否是成功交付与否.主要问题是用户每次收到通知都需要打开应用程序,而在夜晚则出现问题.所以这个选项对我不好.
我查看了反馈服务器推送通知,但是如果推送通知未送达,我找不到任何可以获得的信息
任何的想法??
我是iOS/Swift开发的新手,我正在开发一个向REST API提出多个请求的应用程序.以下是检索"消息"的其中一个调用的示例:
func getMessages() {
let endpoint = "/api/outgoingMessages"
let parameters: [String: Any] = [
"limit" : 100,
"sortOrder" : "ASC"
]
guard let url = createURLWithComponents(endpoint: endpoint, parameters: parameters) else {
print("Failed to create URL!")
return
}
do {
var request = try URLRequest(url: url, method: .get)
let task = URLSession.shared.dataTask(with: request as URLRequest) { (data, response, error) in
if let error = error {
print("Request failed with error: \(error)")
// TODO: retry failed request
} else if let …Run Code Online (Sandbox Code Playgroud) 是否有可能检测应用程序处于脱机状态时(不是在后台还是前台)是否收到了推送通知?如果用户直接从弹簧板上而不是从推送通知警报中打开应用程序,则是否可以检测到。
我正在使用APNS发送远程推送通知.要求是将通知发送给应用程序用户(即使用户没有点击通知或甚至看不到通知),根据通知ID i向Web服务器发送送达回执(即调用Web服务)接收.
APNS没有提供交付报告.他们是APNS的反馈服务,但也不提供交付报告.
所以我想知道获得远程推送通知的交付报告的可能方法是什么.如果我能够在APP deligate或其他任何其他远程推送通知到达时执行自定义方法,即使APP在后台或由用户终止,那么它将解决我的问题.
任何帮助将受到高度赞赏.
下面是我目前使用的代码,当应用程序处于后台时,它无法正常工作.
我写了一个自定义方法
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
Run Code Online (Sandbox Code Playgroud)
向服务器发送确认收到通知的确认.当应用程序在前台时,所有功能都完美地执行.但是当应用程序处于后台时会出现问题.写的自定义方法
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
Run Code Online (Sandbox Code Playgroud)
直到用户通过点击通知栏打开应用程序才执行,如果用户通过点击应用程序图标而不是通知栏打开应用程序,则不会执行.
iphone objective-c push-notification apple-push-notifications ios