一、iOS推送證書
iOS推送證書是與APNs建立安全連接的必需工具。在發布推送之前,您需要為您的應用程序創建一個證書,並將其下載到您的開發/生產環境中。下面是一些簡單的步驟:
1. 登錄https://developer.apple.com/account,選擇「Certificates, Identifiers & Profiles」。
$ openssl genrsa -out Push.pem 2048
$ openssl req -new -key Push.pem -out Push.csr -subj "/CN=‹Your App Name›/emailAddress=‹Your Email Address›/UID=‹Your Team ID›" -config openssl.cnf
$ openssl x509 -req -in Push.csr -out Push.crt -signkey Push.pem -extensions req_ext -extfile openssl.cnf
2. 在左側的「Keychain」中選擇「Certificates」。
3. 點擊右上角的「+」按鈕以創建新的證書,並選擇「APNs Authentication Key」。
4. 在下一個屏幕上,選擇您的應用程序,並單擊「生成」按鈕。然後,下載私鑰。
5. 添加Apple生成的APNs密鑰到您的密鑰庫中:
$ openssl pkcs12 -export -inkey AuthKey.p8 -in Certificates.p12 -out CertificatesPush.p12
6. 您現在已準備好將證書與您的應用程序和伺服器一起使用了。
二、iOS推送收費
Apple為每個開發者賬號提供了1,000個免費的推送服務。這意味著,您可以向1,000個不同的設備發送推送,然後需要支付近乎微不足道的費用,每1000條推送只要99美分。
如果您還沒有註冊蘋果開發者賬號,您需要首先進行支付。每年的價格為99美元。
三、iOS推送機制
iOS向移動設備發送推送通知是通過Apple推送服務(APNs)實現的。APNs是Apple支持iOS的推送通知的中央伺服器,用於接收發送到移動設備的推送通知,並傳遞給設備。以下是APNs工作原理的簡易解釋:
1. 手機與APNs伺服器建立加密鏈接。
2. 應用程序向APNs伺服器請求令牌(每個應用程序有唯一的令牌)。
3. 應用程序將令牌發送給伺服器。
4. 伺服器接收令牌並將其存儲在內存中。
5. 當應用程序發送推送通知時,它將消息和設備令牌一起發送到APNs伺服器。
6. APNs伺服器將消息發送到與設備令牌相關聯的設備。
四、iOS推送時間
iOS推送的最佳時間因應用程序不同而異的。因此,開發人員需要花費時間進行測試和分析,以了解特定應用程序的最佳時間。這裡有一些iOS推送時間的經驗法則:
1. 不要在深夜發送推送通知,這可能會打擾用戶的休息時間。
2. 在用戶常規解鎖手機和使用應用程序的時間段發送推送通知。
3. 為事件發送推送通知,而不是在用戶使用應用程序時發送推送通知,這樣會打擾他們的工作流程。
五、iOS推送方法
1. 在應用程序中使用「本地通知」。
let content = UNMutableNotificationContent()
content.title = "Notification Tutorial"
content.subtitle = "from iOScreator"
content.body = "Notification triggered"
content.badge = 1
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false)
let request = UNNotificationRequest(identifier: "notification.id.01", content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request)
{ (error) in
if let _ = error {
print("error")
}}
2. 發送具有定製消息的Push通知。
$deviceToken = 'e5a1f04a5d...cc1a715e308f';
$message = "Hello World!";
$title = "My Application";
$body['aps'] = array('alert' => $message);
$body['aps']['data'] = array('title' => $title);
$body['aps']['sound'] = 'default';
$payload = json_encode($body);
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'apns.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', 'password');
$fp = stream_socket_client(
'ssl://gateway.sandbox.push.apple.com:2195', $err,
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
if (!$fp)
exit("Failed to connect: $err $errstr" . PHP_EOL);
$message = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload;
$result = fwrite($fp, $message, strlen($message));
if ($result)
echo 'Message sent successfully' . PHP_EOL;
else
echo 'Message sending failed' . PHP_EOL;
fclose($fp);
六、iOS推送延遲
iOS推送通知不保證實時到達設備。網路連接問題或伺服器繁忙都可能會導致延遲。此外,Apple還增加了發送消息的緩衝區延遲時間,以避免向過度頻繁的設備發送推送通知。
以下是一些可以減少iOS推送延遲的方法:
1. 在發送推送之前進行測試。
2. 不要在網路負載高峰期發送推送通知。
3. 避免向沒有應用程序打開的設備發送推送通知。
七、iOS推送p8證書
iOS推送證書p8是新的證書格式,已取代舊的p12證書。下面是一些簡單的步驟:
1. 登錄https://developer.apple.com/account,選擇「Certificates, Identifiers & Profiles」。
2. 在左側的「Keychain」中選擇「Keys」。
3. 點擊右上角的「+」按鈕以創建新的密鑰,並選擇「APNs Auth Key」。
4. 在下一個屏幕上,選擇您的應用程序,並單擊「生成」按鈕。然後,下載私鑰。
5. 添加Apple生成的APNs密鑰到您的密鑰庫中:
$ openssl pkcs8 -in private_key.p8 -out private_key.pem -nocrypt
6. 您現在已準備好將證書與您的應用程序和伺服器一起使用了。
八、iOS推送開發
要開始iOS推送通知的開發,請首先註冊iOS開發者賬號,並為您的應用程序創建推送證書(如上所述)。以下是一些有用的開發技巧和調試工具:
1. Apple的官方指南提供了開發人員可以使用的完整iOS推送服務文檔。
2.從iOS 10開始,蘋果推出了一個新的框架,稱為UserNotifications。它提供了一種簡化推送通知開發的方法。詳細信息可以在Apple的開發人員網站上找到。
3.除了Apple提供的遠程推送通知API外,還有一些第三方庫,如Parse.com和OneSignal。
九、iOS推送詳解
Apple支持兩種類型的推送通知:本地通知和遠程通知。以下是兩種推送通知的詳細說明:
本地通知
本地通知是在不需要伺服器或互聯網連接的情況下發送到用戶的設備的iOS應用程序。本地通知可能是一次性通知或定期通知。這種類型的通知通常用於提醒用戶執行操作,例如提醒用戶簽到或稱讚應用。對於本地通知的實現,我們可以使用以下代碼:
let content = UNMutableNotificationContent()
content.title = "Notification Tutorial"
content.subtitle = "from iOScreator"
content.body = "Notification triggered"
content.badge = 1
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false)
let request = UNNotificationRequest(identifier: "notification.id.01", content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request)
{ (error) in
if let _ = error {
print("error")
}}
遠程通知
遠程通知是由伺服器發送到安裝了應用程序的設備的iOS應用程序。遠程通知通常用於即時消息和更新。對於遠程通知的實現,我們可以使用以下代碼:
$deviceToken = 'e5a1f04a5d...cc1a715e308f';
$message = "Hello World!";
$title = "My Application";
$body['aps'] = array('alert' => $message);
$body['aps']['data'] = array('title' => $title);
$body['aps']['sound'] = 'default';
$payload = json_encode($body);
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'apns.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', 'password');
$fp = stream_socket_client(
'ssl://gateway.sandbox.push.apple.com:2195', $err,
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
if (!$fp)
exit("Failed to connect: $err $errstr" . PHP_EOL);
$message = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload;
$result = fwrite($fp, $message, strlen($message));
if ($result)
echo 'Message sent successfully' . PHP_EOL;
else
echo 'Message sending failed' . PHP_EOL;
fclose($fp);
十、iOS推送怎麼關閉
如果您不希望接收特定應用程序的推送通知,請按照以下步驟關閉推送通知:
1. 打開「設置」應用程序。
2. 搜索並單擊要關閉推送通知的應用程序。
3. 關閉該應用程序的「允許通知」開關。
4. 如果您不想接收該應用程序的推送通知,還可以關閉「顯示在鎖屏上」、「聲音」和「彈出式窗口」選項。
總之,在iOS推送中,您需要考慮的方面很多,包括證書創建、收費和APNs機制等。但是,掌握這些內容可以幫助您發送更有用、更高效和更及時的通知。好了,本次iOS推送完全指南到此結束!
原創文章,作者:TUWQP,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/317250.html