極光推送
阿新 • • 發佈:2022-03-18
目錄
極光推送
介紹:
極光推送支援 Android、iOS、QuickApp、Web 等平臺,SDK 接入方便快捷,推送通道高速穩定且支援海外專線,API 開放介面強大、靈活和易用、WEB 端支援建立通知、後效分析、標籤別名管理和故障排查等運營功能。極光推送(JPush)在為開發者提供基礎推送服務的同時,還提供了使用者精準標籤、使用者分群、地理圍欄、應用內訊息、智慧傳送策略、智慧時機、智慧促活等服務能力,可有效提升訊息的送達率、展示率和點選率,通過精細化運營觸達助力 APP 提升日活和留存。
支援型別
平臺型別支援
平臺型別 | Android | iOS | QuickApp | Web | Winphone | Windows | Mac |
---|---|---|---|---|---|---|---|
支援情況 | 支援 | 支援 | 支援 | 支援(私有云) | 支援 | 支援(私有云) | 支援(私有云) |
訊息型別支援
訊息型別 | 通知欄訊息 | 自定義訊息 | 應用內訊息 | 地理圍欄訊息 | 通知欄 + 自定義訊息 | 自定義訊息轉通知欄訊息 | 應用內提醒訊息 |
---|---|---|---|---|---|---|---|
支援情況 | 支援 | 支援 | 支援 | 支援 | 支援 | 支援 | 支援 |
通知樣式支援
通知樣式 | 預設樣式 | 縮圖樣式 | 大圖樣式 | 文字樣式 | 收件箱樣式 | 自定義樣式 |
---|---|---|---|---|---|---|
支援情況 | 支援 | 支援 | 支援 | 支援 | 支援 | 支援 |
SDK 能力支援
SDK/ 外掛項 | 功能描述 |
---|---|
Android SDK | JPush Android SDK 是極光推送為 Android 平臺開發的 SDK,作為 Android Service 執行在後臺,接收並處理服務端推送的通知訊息。 |
iOS SDK | JPush iOS SDK 是極光推送為 iOS 平臺開發的 SDK,使用官方推送通道作為 iOS Service 執行在後臺,接收並處理服務端推送的通知訊息。 |
服務端 SDK | JPush 服務端所提供 PUSH 後臺服務 SDK,包含 Java、Python、PHP、Ruby、C# 和 Node.js,釋出在 GitHub 上。 |
客戶端外掛 | JPush 提供主流的開發工具整合外掛,包含 Flutter、Uniapp、React Native 和 Cocos2d-x 等,釋出在 GitHub 上。 |
SDK 地址
-
服務端 (包含了:Java、Python、PHP、Ruby、C、Node.js 等SDK)
-
客戶端 (客戶端 SDK 下載有兩種方法第一種就是本連結、還有一種方法就是建立好應用後到設定裡面指定證書等後下載)
當然我沒有下載客戶端的,客戶端具體怎麼實現的也不清楚了。
使用示例
使用平臺:IOS、Android
訊息型別:通知欄訊息、自定義訊息、應用內訊息
Android 通知樣式需要前臺設定模板 服務端使用 channel_id
繫結
使用 PHP SDK 需要注意放的位置,放到 extend
裡面需要修改 use 引入的方式,不然會報找不到類的錯誤資訊;
/**
* @param $title string 標題
* @param $msg string 訊息內容
* @param $params array 設定引數
* @param $registration_id array 註冊 IDs
*/
function morePush($title = '',$msg = '', $params = [], $registration_id = [])
{
require_once EXTEND_PATH."/jpush/src/JPush/Client.php";
$config = config('jpush');
$client = new JPush\Client($config['appKey'], $config['masterSecret'], null,10);
try {
$response = $client->push()
->setPlatform(array('ios', 'android'))
// 一般情況下,關於 audience 的設定只需要呼叫 addAlias、addTag、addTagAnd 或 addRegistrationId
// 這四個方法中的某一個即可,這裡僅作為示例,當然全部呼叫也可以,多項 audience 呼叫表示其結果的交集
// 即是說一般情況下,下面三個方法和沒有列出的 addTagAnd 一共四個,只適用一個便可滿足大多數的場景需求
// ->addAlias('alias')
// ->addTag(array('tag1', 'tag2'))
->addRegistrationId($registration_id)
// 設定推送裝置
// ->addAllAudience('all')
// message 與 notification 一起二者必須有其一,可以二者並存。
// 所有平臺推送相同的 alert 訊息
->setNotificationAlert('alert')
// IOS 平臺訊息
->iosNotification([
'title' => $title,
'body' => $msg
], array(
'sound' => 'jpush.caf',
'badge' => '+1',
'content-available' => true,
'mutable-content' => true,
'extras' => $params,
))
// 安卓平臺訊息
->androidNotification($title, array(
'title' => $title,
'alert' => $msg,
'sound' => '',
'extras' => $params,
'style' => 1,
// 'big_text' => '',
// 通知型別 可選範圍為 -1~7 ,預設按照 -1 處理。 即0111二進位制,左數第二位代表 light,第三位代表 vibrate,第四位代表 sound。 0:不生效,1:生效
'alert_type' => '1111',
// 圖示 小角標 +1
'badge_add_num' => 1,
// 華為小角標 +1 需要加包名
'badge_class' =>'com.example.xinenhuadaka'
))
// ->message($msg, array(
// 'title' => $title,
// 'msg_content' => $msg,
// 'content_type' => 'text',
// 'extras' => $params,
// ))
->options(array(
// sendno: 表示推送序號,純粹用來作為 API 呼叫標識,
// API 返回時被原樣返回,以方便 API 呼叫方匹配請求與返回
// 這裡設定為 100 僅作為示例
'sendno' => 100,
// time_to_live: 表示離線訊息保留時長(秒),
// 推送當前使用者不線上時,為該使用者保留多長時間的離線訊息,以便其上線時再次推送。
// 預設 86400 (1 天),最長 10 天。設定為 0 表示不保留離線訊息,只有推送當前線上的使用者可以收到
// 這裡設定為 1 僅作為示例
'time_to_live' => 10,
// apns_production: 表示APNs是否生產環境,
// True 表示推送生產環境,False 表示要推送開發環境;如果不指定則預設為推送開發環境
'apns_production' => false,
// big_push_duration: 表示定速推送時長(分鐘),又名緩慢推送,把原本儘可能快的推送速度,降低下來,
// 給定的 n 分鐘內,均勻地向這次推送的目標使用者推送。最大值為1400.未設定則不是定速推送
// 這裡設定為 1 僅作為示例
// 'big_push_duration' => 1
))
// 已棄用
// ->setSmsMessage(array(
// 'delay_time' => 60,
// 'signid' => 154,
// 'temp_id' => 1,
// 'temp_para' => array(
// 'code' => 357
// ),
// 'active_filter' => false
// ))
// custom可自定義最外層引數,如skd未支援部分文件功能,使用者可自行寫入
// 這裡僅作為例子展示
// ->custom(array(
// 'sms_message' => array(
// 'active_filter' => false,
// 'delay_time' => 60,
// 'signid' => 154,
// 'temp_id' => 1,
// 'temp_para' => array(
// 'code' => 357
// )),
// 'options' => array(
// 'apns_production' => false,
// 'time_to_live' => 62000,
// )
// ))
->send();
return $response;
} catch (\JPush\Exceptions\APIConnectionException $e) {
return $e;
} catch (\JPush\Exceptions\APIRequestException $e) {
return $e;
}
}