Kode saya tulis dalam artikel ini juga tersedia dalam repositori ini sehingga Anda bisa mengkloning bahwa jika Anda ingin mengikuti bersama.
Apa Pushover?
Pushover adalah web dan aplikasi mobile yang memungkinkan Anda untuk mendapatkan pemberitahuan real time pada perangkat mobile Anda. Cara kerjanya adalah bahwa Anda menginstal sebuah aplikasi pada perangkat Android atau Apple dan menggunakan API berguna Anda dapat mengirim bahwa aplikasi pemberitahuan. Hal yang besar tentang ini adalah bahwa hal itu terjadi kurang lebih secara real time (tergantung pada koneksi internet Anda) sebagai Pushover menggunakan server Google dan Apple untuk mengirim pemberitahuan.Harganya juga sangat terjangkau. Pada tingkat $ 4,99 USD per Platform (Android, Apple atau desktop) yang dibayarkan hanya sekali, Anda dapat menggunakannya pada sejumlah perangkat di bawah platform tersebut. Dan Anda juga mendapatkan masa percobaan 5 hari secara gratis saat Anda membuat akun Anda.
Apa yang saya lakukan di sini?
Dalam artikel ini saya akan membuat sebuah aplikasi Pushover dan menggunakannya dari situs Drupal saya untuk memberitahu telepon saya berbagai acara. Saya akan memberikan dua contoh kasus penggunaan yang Pushover dapat berguna dengan:- Setiap kali seorang pengguna anonim posting komentar yang menunggu persetujuan administratif, saya akan mengirimkan pemberitahuan ke ponsel saya
- Setiap kali user admin 1 log ke situs, saya akan mengirim pemberitahuan darurat ke ponsel saya (berguna jika Anda adalah satu-satunya pengguna akun admin).
Akun pushover
Pertama, cepat melihat membuat akun Pushover Anda. Untuk mengikuti, pergi ke pushover dan mendaftar jika Anda belum dan Anda dapat mulai percobaan gratis 5 hari Anda. Lalu, ke Google Play atau App Store dan menginstal aplikasi pada perangkat Anda. Anda harus masuk ke akun Anda dan memberikan perangkat nama. Tambang disebut hanya Nexus (petunjuk: Saya tidak memiliki iPhone).Kembali kemudian ke situs Pushover dan Anda sudah dapat menguji itu dengan mengirimkan sendiri pemberitahuan tes untuk satu atau semua perangkat aktif Anda. Anda bahkan dapat menentukan mana suara itu harus membuat.
Selanjutnya, jika Anda ingin menggunakan API, Anda harus membuat aplikasi . Hal ini akan menghasilkan untuk Anda sebuah
app_token
digunakan di kemudian hari. Dan yang harus cukup banyak itu. Drupal
Sekarang bahwa pembuatan account Pushover diurus, aplikasi perangkat diinstal (Android dalam kasus saya) dan saya memiliki aplikasi Pushover saya, saatnya untuk melihat bagaimana saya bisa mencapai tujuan yang ditetapkan di awal. Sebagai roadmap singkat, saya akan melakukan hal berikut:- Membuat modul Drupal kustom
- Tambahkan ke kelas Pushover diciptakan oleh Chris Schalenborgh (pembungkus berguna selama panggilan ikal ke API)
- Mengimplementasikan beberapa kait yang akan memicu pemberitahuan berdasarkan kondisi tertentu
- Keuntungan
pushover
dan mengandung pushover.info
dan pushover.module
berkas (sesuai kebutuhan). Selain itu, saya akan membuat lib/Pushover
folder di dalamnya untuk menyimpan kelas eksternal saya akan gunakan untuk menyambung ke pushover. Ada lain - cara yang lebih dianjurkan - mengimpor perpustakaan eksternal ke dalam modul Drupal (lihat Perpustakaan API ), tapi untuk singkatnya, ini akan bekerja dengan baik. Hal pertama yang ingin saya lakukan di saya
pushover.module
file untuk mengimpor kelas eksternal ini. Berdasarkan struktur folder saya, saya dapat melakukannya dengan baris ini:require_once(DRUPAL_ROOT . '/' . drupal_get_path('module', 'pushover') . '/lib/Pushover/Pushover.php');
Selanjutnya, saya ingin membuat fungsi pembantu dapat digunakan kembali yang akan kembali objek pushable. Itu adalah obyek yang sudah diisi dengan default saya sendiri (seperti kredensial) dan yang mengambil beberapa parameter untuk sifat yang lebih umum. Tapi pertama-tama, saya ingin menempatkan saya kredensial akun Pushover ke settings.php
berkas karena mereka tidak termasuk dalam git repositori saya:$conf['pushover_credentials'] = array(
'user_token' => 'uCpygdjfsndfi7233sdasdo33Yv',
'app_token' => 'aKH8Nwsdasdanl342jmsdaBWgoVe',
);
Jelas tidak token ini sekarang berlaku tetapi jika Anda mengikuti bersama, Anda harus menggantinya dengan Anda: the user_token
Anda mendapatkan pada halaman utama saat Anda login ke situs Pushover dan app_token
adalah yang dihasilkan untuk aplikasi Anda. Lalu aku bisa melanjutkan fungsi pembantu saya yang saya sebutkan sebelumnya:
/**
* Helper function that returns a pushable object using the Pushover class
*
* @param $vars
* @return bool|Pushover
*/
function pushover_get_pushable($vars) {
global $conf;
if (isset($conf['pushover_credentials'])) {
$push = new Pushover();
$push->setToken($conf['pushover_credentials']['app_token']);
$push->setUser($conf['pushover_credentials']['user_token']);
$push->setTitle($vars['title']);
$push->setMessage($vars['message']);
if (isset($vars['url'])) {
$push->setUrl($vars['url']);
}
if (isset($vars['device'])) {
$push->setDevice($vars['device']);
}
$push->setTimestamp(time());
return $push;
}
else {
return FALSE;
}
}
Dalam fungsi ini saya instantiate objek Pushover baru jika ada mandat dalam saya settings.php
berkas. Jika tidak, saya gagal diam-diam dengan kembali palsu. Fungsi mengambil beberapa parameter yang ditetapkan pada objek: judul dan pesan yang wajib sedangkan url dan perangkat tidak. Perangkat ini sebenarnya nama perangkat yang Anda ingin membatasi pemberitahuan ini.Selain itu, saya mengatur waktu saat ini dan kemudian kembali objek.
Selanjutnya, saatnya untuk menggunakan fungsi ini dalam beberapa kait. Yang pertama adalah akan hook_comment_insert () :
/**
* Implements hook_comment_insert().
*/
function pushover_comment_insert($comment) {
// Send a push notification if a new comment is created by an anonymous user
// and it is not yet published.
if ($comment->status == 0 && $comment->is_anonymous == TRUE) {
global $base_url;
$vars = array(
'title' => 'New comment on ' . variable_get('site_name') . '!',
'message' => 'Subject: ' . $comment->subject,
'url' => $base_url . '/node/' . $comment->nid . '#comment-' . $comment->cid,
'device' => 'Nexus'
);
$pushable = pushover_get_pushable($vars);
if ($pushable) {
$pushed = $pushable->send();
if ($pushed == false) {
watchdog('Pushover', t('A comment has been created but there was an error pushing that over.'), array(), WATCHDOG_ERROR, NULL);
}
}
}
}
Disini saya memeriksa apakah commenter anonim dan status adalah 0 (untuk berada di sisi yang aman). Jika itu terjadi, saya membangun array parameter untuk fungsi pembantu saya dengan beberapa informasi tentang situs dan komentar dan menggunakan send()
metode untuk mengirim pemberitahuan. Anda akan melihat bahwa saya terbatas ini dengan Nexus
perangkat.Pada akhirnya, saya memeriksa apakah pemberitahuan keluar berhasil (dengan
send()
method mengembalikan false jika layanan Pushover tidak mengembalikan kode status keberhasilan 1
. Jika ada yang tidak beres, aku segera masuk ke pengawas.Jadi jika seorang pengguna anonim menulis komentar, saya mendapatkan pemberitahuan push dengan nama situs, subjek komentar dan URL. Nifty.
/**
* Implements hook_user_login().
*/
function pushover_user_login(&$edit, $account) {
// If the admin user logs in, send a push notification.
if ($account->uid == 1) {
$whitelist = array('1.1.1.1');
if (!in_array(ip_address(), $whitelist)) {
global $base_url;
$vars = array(
'title' => 'Admin user sign in',
'message' => 'Admin user has logged into this site: ' . variable_get('site_name') . '!',
'url' => $base_url,
);
$pushable = pushover_get_pushable($vars);
if ($pushable) {
$pushable->setPriority(2);
$pushable->setRetry(30);
$pushable->setExpire(60);
$pushed = $pushable->send();
if ($pushed == false) {
watchdog('Pushover', t('An admin user has logged into the site but there was an error pushing this over.'), array(), WATCHDOG_ERROR, NULL);
}
}
}
}
}
Di sini, saya pertama kali memeriksa apakah pengguna login adalah satu dengan id dari 1 (user admin utama).
Lalu aku membuat sebuah array dengan IP daftar putih untuk memeriksa
terhadap penebangan pengguna. Saya tidak ingin mendapatkan pemberitahuan
jika saya login dari rumah atau dari kantor ( 1.1.1.1
hanya alamat ip misalnya).Kemudian seperti sebelumnya, saya mendapatkan objek pushable saya dengan variabel biasa (tidak ada perangkat kali ini, saya ingin ini pergi ke semua perangkat saya). Di atas itu, saya menetapkan prioritas 2 (menandai pemberitahuan darurat), nilai retry dari 30 detik dan berakhir nilai 60 detik. Yang terakhir 2 dalam kombinasi dengan prioritas membuatnya sehingga jika dibiarkan tidak diakui oleh telepon saya, pemberitahuan akan membenci setiap 30 detik untuk total durasi 60 detik. Untuk informasi lebih lanjut tentang kemungkinan pilihan yang Anda miliki dengan Pushover, pastikan Anda memeriksa mereka docs API .
Dan ada itu. Sekarang saya akan mendapatkan pemberitahuan darurat jika seseorang log in dengan account admin saya. Tentu saja, tidak sangat baik jika banyak orang dapat log in dengan akun itu, tapi Anda mendapatkan titik.
0 Komentar untuk " Cara Menggunakan Drupal Site Pushover "