Cara membuat API di aplikasi Android apa pun. Contoh WhatsApp

Salam pembuka! Tugas saya telah diambil: perlu untuk mengintegrasikan messenger ke dalam sistem CRM, jika tidak sulit untuk menganalisis pekerjaan manajer ketika mereka berkomunikasi dengan klien menggunakan satu telepon "bekerja" yang umum. Dan hal pertama yang harus dilakukan adalah menghubungkan WhatsApp, sebagai salah satu messenger instan paling populer untuk audiens target kami.

Analisis situasi ...


Yang tampaknya diperlukan hanyalah mengirim dan menerima pesan. Dan begitu banyak jebakan ...

1. API Resmi


Tidak ada API resmi dalam rilis itu. Tetapi Facebook berhasil mengirim tautan ke formulir untuk menghubungkan API resmi, yang sedang diuji.

2. Layanan pihak ketiga. Koneksi melalui WhatsApp WEB


Saya menganggap opsi metode "abu-abu", penggunaan layanan tidak resmi yang mengirim pesan melalui antarmuka WEB, terhubung dengan memindai kode QR.

Tetapi ini adalah ketergantungan pada API orang lain, setiap saat semuanya bisa jatuh, dan saya tidak ingin mentransfer nomor klien ke layanan orang lain. Dan menulis di bawah API penulis lain, dan bahkan menulis ulang ketika Anda pindah ke layanan lain, juga menyenangkan.

Yah, Anda juga perlu menghidupkan telepon (meskipun beberapa layanan dengan biaya tambahan menyelesaikan masalah ini :)

3. Mode manual


Tanam seseorang, biarkan salin dan tempel pesan ke pelanggan Bercanda sebagai lelucon, tetapi dari ide ini lahirlah solusi!

Keputusan


Pengiriman pesan


gambarAda program semacam itu untuk tindakan otomatisasi untuk Android, yang disebut Tasker , salah satu dari program semacam itu. Tapi saya tidak memahaminya pertama kali ... Saya mencari analog, saya menemukan program Automagic . Di dalamnya, peristiwa, tindakan dan cabang digambar sebagai diagram blok.

Offtop

Dan di dalamnya saya menemukan solusi, kita tidak perlu hak root. Ternyata menggunakan metode poke ilmiah untuk menggambar skrip pengiriman pesan, maka saya akan memanggil aliran, sehingga setiap algoritma yang ditarik individu dipanggil dalam program ini. Dan sekarang kita akan menganalisis karyanya:

Screenshot aliran pesan WhatsApp
image

  1. Setiap 5 detik, suatu peristiwa dihasilkan oleh penghitung waktu berkala dan dikirimkan ke blok berikutnya.
  2. HTTP Request , , ? PHP.
  3. JSON.
  4. , , .
  5. , , , , . , , , , :
  6. , WhatsApp'
  7. . Control UI. ( ), .

    , ,
    sleep(2000);  // 2    
     
    sle = 200;
    ch_c = 0;
    ch = false;
    is_sended = false;
     
    sleep(sle);
    ch = existsElementById("com.whatsapp:id/entry"); // ,      
    sleep(sle);
    if (ch == false) {
      ch = existsElementById("com.whatsapp:id/entry"); //  
      ch_c = ch_c + 1;
      sleep(1500);
    }
    
    if (ch == false) {
      ch = existsElementById("com.whatsapp:id/entry"); 
      ch_c = ch_c + 1;
      sleep(5500);
    }
    
    ch = existsElementById("com.whatsapp:id/entry");
    sleep(sle);
    setText2ById("com.whatsapp:id/entry",text); //  
    sleep(sle);
    
    clickById("com.whatsapp:id/send");  //   
    sleep(sle);
    back();
    sleep(sle);
    back();
    status = 2;
    
    if(ch == true) {  //   , ,    
      is_sended = true;
      status = 1;
    }
    

  8. Kami mengirim hasil pengiriman pesan ke server.
  9. Kami kembali ke layar beranda.

Terima pesan


Menerima pesan jauh lebih mudah. Kami menempatkan acara pada notifikasi dari kurir. Segera setelah pemberitahuan tiba, tandai sudah dibaca, dan kirimkan ke server apa adanya. Itu sudah mem-parsing penerima dan teks.

Cuplikan layar dari algoritma penerimaan pesan


Pro, kontra, penyempurnaan, dan rencana


Algoritme melakukan fungsi utama mengirim pesan dengan sempurna. Karena antarmuka WEB tidak digunakan, mengambil mandi dari kurir kurang berisiko, seperti yang menurut saya. Saya menyewa server virtual yang lemah, menginstal Android di sana dan mentransfer semuanya.

Dibutuhkan ~ 5 detik untuk mengirim satu pesan ke kontak baru. Untuk memeriksa pengiriman dan membaca pesan, saya mengembangkan aliran terpisah, tetapi dalam bentuk konsep dan kadang-kadang tidak berfungsi. Karena itu, tentang dia nanti.

Saat ini, fungsi menerima pesan media (foto, audio, lampiran) tidak diterapkan, tetapi ini dapat diunduh dari WhatsApp menggunakan tombol pesan berbagi di masa mendatang.

Beberapa saat kemudian saya ingin menulis trunk SIP di atas mesin virtual tempat messenger berjalan, di mana dimungkinkan untuk menelepon melalui WhatsApp melalui SIP ^. ^ Yang dapat menghemat biaya komunikasi.

Saya juga ingin mengambil tangkapan layar avatar dan mengirimkannya ke server untuk melampirkan thumbnail ke kontak di sistem CRM.

Nah, secara umum, yang paling menarik: Metode pembungkus dalam API ini cocok untuk hampir semua aplikasi untuk Android :)

Semuanya awalnya dikembangkan dan diluncurkan pada Android 9, xiaomi mi 9 se, root tidak benar.

Source: https://habr.com/ru/post/undefined/


All Articles