Bu eğitim, Web için Google Meet Eklentileri Yazılım Geliştirme Kiti'ni (SDK) kullanarak eklentinin nasıl oluşturulacağını gösterir. Bu, Google Meet'ten ayrılmadan bir web uygulamasında paylaşımda bulunmanıza ve ortak çalışmanıza olanak tanır.
-
Web için Meet Eklentileri SDK'sının yan paneli. -
Web için Meet Eklentileri SDK'sının kullanıcıların ortak çalıştığı ana aşaması.
Hedefler
- Google Cloud Console'da Web için Meet Eklentileri SDK'sı oluşturup dağıtın.
- Web için Meet Eklentileri SDK'sı için ana sahne ve yan panel oluşturun.
Ortamınızı hazırlayın
Bu bölümde, Web için Meet Eklentileri SDK'sının nasıl oluşturulacağı ve yapılandırılacağı açıklanmaktadır.
Google Cloud projesi oluşturma
Google Cloud Console
- Google Cloud konsolunda Menü > IAM ve Yönetici > Proje oluştur'a gidin.
-
Proje Adı alanına projeniz için açıklayıcı bir ad girin.
İsteğe bağlı: Proje Kimliği'ni düzenlemek için Düzenle'yi tıklayın. Proje kimliği, proje oluşturulduktan sonra değiştirilemez. Bu nedenle, projenin ömrü boyunca ihtiyaçlarınızı karşılayan bir kimlik seçin.
- Konum alanında projeniz için potansiyel konumları görüntülemek üzere Göz at'ı tıklayın. Ardından Seç'i tıklayın.
- Oluştur'u tıklayın. Google Cloud Console, Kontrol Paneli sayfasına gider ve projeniz birkaç dakika içinde oluşturulur.
gcloud CLI
Aşağıdaki geliştirme ortamlarından birinde Google Cloud KSA'ya ("gcloud") erişin:
-
Cloud Shell: Halihazırda gcloud KSA bulunan bir online terminal kullanmak için Cloud Shell'i etkinleştirin.
Cloud Shell'i etkinleştir -
Yerel Kabuk: Yerel bir geliştirme ortamı kullanmak için gcloud KSA'yı yükleyin ve initialize.
Bulut projesi oluşturmak için "gcloud projects create" komutunu kullanın:gcloud projects create PROJECT_ID
API'leri etkinleştirme
Konsol
Google Cloud konsolunda Google Workspace Marketplace SDK'sını ve Google Workspace Add-ons API'yi etkinleştirin.
API'leri doğru Cloud projesinde etkinleştirdiğinizi onaylayın ve İleri'yi tıklayın.
Doğru API'leri etkinleştirmekte olduğunuzu onaylayın ve Etkinleştir'i tıklayın.
gcloud CLI
Gerekirse mevcut Google Cloud projesini,
gcloud config set project
komutuyla oluşturduğunuz projeye ayarlayın:gcloud config set project PROJECT_ID
PROJECT_ID kısmını, oluşturduğunuz Cloud projesinin Proje Kimliği ile değiştirin.
gcloud services enable
komutuyla Google Workspace Marketplace SDK'sını ve Google Workspace Add-ons API'yi etkinleştirin:gcloud services enable appsmarket-component.googleapis.com gsuiteaddons.googleapis.com
Web uygulamasını oluşturma ve dağıtma
Aşağıdaki bölümde, Web için Meet Eklentileri SDK'nız için gerekli tüm uygulama kodunu içeren bir web uygulaması projesinin (Firebase kullanılarak oluşturulan) tamamını kopyalayıp güncelleyeceksiniz. Öncelikle web uygulamasını yapılandırmanız ve dağıtmanız gerekir.
Örnek kodu inceleyin
Temel web uygulamasını GitHub'da görüntüleyebilir ve indirebilirsiniz.
Temel kodla ilgili genel bakışı burada bulabilirsiniz:
- React tabanlı bir çerçeve olan Next.js kullanılarak oluşturulur.
- Stil oluşturmak için Tailwind CSS'sini kullanır.
src/components
, uygulama mantığının büyük kısmını içerir. Burada güncellenecek veya değiştirilecek bir şey yok.src/firebase
, Firebase yapılandırmasını ve başlatma kodunu içerir.src/app
, web uygulaması giriş noktalarını içeriyor.src/app/page.tsx
, ana sayfa veya proje listesidir.src/app/project/[id]/page.tsx
, tek bir projenin ve görev listesinin sayfasıdır..env
, ortam yapılandırmasını içerir.
Firebase projesini ve CLI'yı ayarlama
Firebase, geliştiricilerin uygulama geliştirmesine yardımcı olan bir mobil uygulama ve web uygulaması geliştirme platformudur. Firestore, kullanıcıların mobil uygulamalar ve web uygulamaları için verileri depolamasına, senkronize etmesine ve sorgulamasına olanak tanıyan bir NoSQL belge veritabanıdır. Firestore, yapılacaklar listesi bilgilerini depoladığımız yerdir. Uygulamada Firebase özellikleri kullanılacağından Firebase CLI ile birlikte Firebase projesi ayarlanmalıdır. Bunun için:
Bir Firebase projesi oluşturun.
Cloud Firestore veritabanı oluşturun.
Temel uygulamanızın kök dizinine gidin.
Projenizi ilk kullanıma hazırlayın.
Yerel proje dosyalarınızı Firebase projenize bağlayın:
firebase init firestore
Proje başlatma sırasında Firebase CLI istemlerinden:
Bir seçenek belirtin:
Use an existing project
seçeneğini belirleyin ve ardından oluşturduğunuz Firebase projesini seçin.Seçilen Firebase projesi, yerel proje dizininiz için "varsayılan" Firebase projenizdir.
Firestore Kuralları için hangi dosya kullanılmalıdır?
(firestore.rules)
görüntüleniyorsa Enter tuşuna basın. Doğru değilse Enter tuşuna basmadan öncefirestore.rules
yazın.firestore.rules dosyası zaten var. Firebase Konsolu'ndaki Firestore Kurallarını kullanarak bunun üzerine yazmak ister misiniz? (E/H)
"N" yazın ve Enter tuşuna basın.
Firestore dizinleri için hangi dosya kullanılmalıdır?
(firestore.indexes.json)
görüntüleniyorsa Enter tuşuna basın. Doğru değilse Enter tuşuna basmadan öncefirestore.indexes.json
yazın.
Firestore veritabanı ayarlandı ve uygulama için kullanılmaya hazır.
Firebase'i Google ile Kimlik Doğrulama
Ardından Google sağlayıcısı ile kimlik doğrulamayı etkinleştirin. Bunun için:
Firebase konsolunda Kimlik Doğrulama sayfasına gidin.
İlk kez bir sağlayıcı ayarlıyorsanız Oturum açma yöntemini ayarla'yı tıklayın. Aksi takdirde, Yeni sağlayıcı ekle'yi tıklayın.
Google'ı seçin ve durumun Etkinleştir olarak ayarlandığından emin olun.
Firebase'de web uygulaması oluşturma
Son olarak, Firebase projenizin içinde bir web uygulaması oluşturun ve yapılandırmayı alın. Bunun için:
Firebase konsolunda, web uygulamanızı Firebase projenize kaydedin.
Proje ayarları'na gidin.
Uygulamalarınız'da kayıtlı web uygulamanızı bulup tıklayın.
firebaseConfig
içindeki değerleri not edin. Bu değişkenleri, sonraki bölümde ortam değişkenlerini güncellerken kullanacaksınız.
Google Cloud proje numaranızı bulma
Google Cloud konsolunu açın.
Google Cloud Console'un yanındaki Aşağı oku
tıklayın ve projenizi seçin.
Menü
> Cloud'a Genel Bakış'ı tıklayın.
Proje Bilgileri bölümünde Proje numarasının değerini not edin. Aşağıdaki bölümde bu değişkeni ortam değişkenlerini güncellemek için kullanacaksınız.
Ortam değişkenlerini güncelleme
Temel kodun .env
dosyasında, önceki adımlardan alınan ayrıntıları aşağıdaki alana girin:
NEXT_PUBLIC_GOOGLE_PROJECT_NUMBER=GOOGLE_PROJECT_NUMBER
NEXT_PUBLIC_GOOGLE_PROJECT_ID=PROJECT_ID
NEXT_PUBLIC_GOOGLE_API_KEY=API_KEY
NEXT_PUBLIC_GOOGLE_AUTH_DOMAIN=AUTH_DOMAIN
NEXT_PUBLIC_GOOGLE_STORAGE_BUCKET=STORAGE_BUCKET
NEXT_PUBLIC_GOOGLE_MSG_SENDER_ID=MSG_SENDER_ID
NEXT_PUBLIC_GOOGLE_APPID=APP_ID
Önceki adımlarda toplanan firebaseConfig
değerlerini ve proje numarasını kullanarak aşağıdakileri değiştirin:
GOOGLE_PROJECT_NUMBER
: Google Cloud projenizin numarasıPROJECT_ID
: Firebase web uygulamanızınprojectId
API_KEY
: Firebase web uygulamanızınapiKey
AUTH_DOMAIN
: Firebase web uygulamanızınauthDomain
STORAGE_BUCKET
: Firebase web uygulamanızınstorageBucket
MSG_SENDER_ID
: Firebase web uygulamanızınmessagingSenderId
APP_ID
: Firebase web uygulamanızınappId
Uygulama kimlik bilgilerinizi ayarlayın
Google uygulaması kimlik bilgilerinizi ayarlamak için aşağıdakileri yapın:
Firebase konsolunda Proje ayarları sayfasına gidin.
Hizmet hesapları sekmesinde Firebase Admin SDK sekmesini seçin.
Yeni özel anahtar oluştur'u tıklayın ve indirilen JSON dosyasının yolunu not edin.
Terminalinizde şu komutu çalıştırın:
export GOOGLE_APPLICATION_CREDENTIALS="JSON_PATH"
JSON_PATH
yerine, indirilen JSON dosyasının bulunduğu yolu girin.
Geliştirme sunucunuza dağıtma
Kod ve ortam hazır olduğuna göre şimdi web uygulamasını yerel geliştirme sunucunuza dağıtabilirsiniz. Bunun için web uygulaması dizininize gidin ve aşağıdaki adımları uygulayın:
npm install
komutunu çalıştırın ve düğüm modüllerinin indirilip yüklenmesini bekleyin.Şu komutu çalıştırın:
npm run dev
.Web uygulamasının çalışır durumda olduğunu doğrulamak için
http://localhost:3000/
adresine gidin.
Web için Meet Eklentileri SDK'sını kullanma
Bir sonraki adım, kodu entegre etmek ve Google Meet Eklentisi haline getirmek için gerekli kod güncellemelerini yapmaktır. Bunun için:
src/meet/meet.d.ts
dosyasını oluşturun- En yeni türleri https://www.gstatic.com/meetjs/addons/0.7.0/index.d.ts adresinden alabilir ve dosyayı yerel olarak kaydedebilirsiniz.
src/meet/utils.ts
dosyasını oluşturuncreateAddonSession
işlevini ekleyin. Oturum, Google Meet'te iletişim kurmak için burada oluşturulur.export function createAddonSession() { let session; session = window.meet.addon.createAddonSession({ cloudProjectNumber: `${process.env.NEXT_PUBLIC_GOOGLE_PROJECT_NUMBER}`, }); return session; }
src/app/meet
dizinini oluşturun. Bu dizin, toplantıya özel tüm rotalar için özel bir dizin işlevi görür.src/app/meet/layout.tsx
dosyasını oluşturunMeet ile ilgili tüm sayfalar için ortak düzen. Meet SDK komut dosyasını bu aşamada eklersiniz ve içeriği oluşturmadan önce SDK'nın yüklendiğinden emin olun.
"use client"; import Script from "next/script"; import { useState } from "react"; type LayoutProps = { children: React.ReactNode; }; /** * Layout for the add-on pages. Injects the Meet SDK script. */ export default function RootLayout({ children }: LayoutProps) { const [sdkAvailable, setSdkAvailable] = useState(false); return (<> <Script src="https://www.gstatic.com/meetjs/addons/0.7.0/meet.addons.js" onReady={() => setSdkAvailable(true)} /> {sdkAvailable ? children : <div>Loading...</div>} </>); }
src/app/meet/sidepanel/page.tsx
dosyasını oluşturunMeet eklentisi için yan panel içeriği. Bu sayfa özel olarak içerik seçimini işler ve içerik seçildiğinde ortak çalışma başlangıç durumunu ayarlar.
"use client"; import { firebaseApp } from "@/firebase/config"; import { getAuth } from "firebase/auth"; import { ProjectList } from "@/components/ProjectList"; import { createAddonSession } from "@/meet/utils"; import { DocumentReference } from "firebase/firestore"; import { useSearchParams } from "next/navigation"; import { useAuthState, useSignInWithGoogle } from "react-firebase-hooks/auth"; import GoogleButton from "react-google-button"; const auth = getAuth(firebaseApp); async function startCollaboration(ref: DocumentReference) { const url = new URL(window.location.href); // Initializing session const session = await createAddonSession(); const client = await session.createSidePanelClient(); client.setCollaborationStartingState({ mainStageUrl: `${url.protocol}//${url.host}/meet/project/${ref.id}`, sidePanelUrl: `${url.protocol}//${url.host}/meet/sidepanel?participant=true`, }); } export default function Home() { const params = useSearchParams(); const [user] = useAuthState(auth); const [signInWithGoogle] = useSignInWithGoogle(auth); const handleProjectSelect = async (ref: DocumentReference) => { // Before navigating, make sure project selection is saved // for when a shared activity is started. await startCollaboration(ref); }; if (!user) { return ( <GoogleButton onClick={() => signInWithGoogle()} ></GoogleButton> ); } if (params.get("participant")) { return <div>You may now close this panel.</div>; } return ( <div className="px-4"> <ProjectList onSelect={handleProjectSelect} /> </div> ); }
src/app/meet/project/\[id\]/page.tsx
dosyasını oluşturunMeet eklentisi için ana sahne içeriği. Seçilen projenin içeriklerini yan panelden gösterir.
"use client"; import { Project } from "@/components/Project"; import { createAddonSession } from "@/meet/utils"; import { firebaseApp } from "@/firebase/config"; import { getAuth, User } from "firebase/auth"; import { useRouter } from "next/navigation"; import { useAuthState, useSignInWithGoogle } from "react-firebase-hooks/auth"; import GoogleButton from "react-google-button"; const auth = getAuth(firebaseApp); // Monitor auth state changes. if (typeof window !== "undefined") { auth.onAuthStateChanged(() => { onAuthStateSettled(auth.currentUser); }); auth.authStateReady().then(() => { onAuthStateSettled(auth.currentUser); }); } /** * Check for auth & doc access when auth state changes. */ async function onAuthStateSettled(user: User | null | undefined) { const session = await createAddonSession(); const client = await session.createMainStageClient(); // For participants, side panel should be closed after authentication await client.unloadSidePanel(); } type PageParams = { params: { id: string; }; }; export default function Page({ params }: PageParams) { const router = useRouter(); const [user, isUserLoading] = useAuthState(auth); if (window.meet.addon.getFrameType() === "MAIN_STAGE") { if (isUserLoading) { return <div>Loading...</div>; } } if (!user) { return ( <GoogleButton onClick={() => signInWithGoogle()} ></GoogleButton> ); } let backButton = null; if (window.meet.addon.getFrameType() === "SIDE_PANEL") { backButton = ( <div className="px-2 pb-2 -my-2"> <button className="flex flex-row" onClick={() => router.back()}> <span className="material-icons">arrow_back</span>previous screen <div className="sr-only">navigate back</div> </button> </div> ); } return ( <div className="w-full min-h-screen px-2"> {backButton} <div className="flex flex-col min-h-screeen"> <Project id={params.id} /> </div> </div> ); }
Dağıtım oluşturun
Eklentinin dağıtımını ayarlayın:
Google Cloud konsolunda Google Workspace Add-ons API'ye gidin.
Alternatif Çalışma Zamanları sekmesini tıklayın.
Yeni dağıtım oluştur'u tıklayın ve eklentinin dağıtım kimliğini girin. Dağıtım kimliği, eklenti geliştiricisinin eklenti manifestini içeren dağıtımı tanımlamasına yardımcı olan rastgele bir dizedir. Dağıtım kimlikleri gereklidir ve en fazla 100 karakterden oluşabilir.
İleri'yi tıklayın.
Eklenti manifestinin spesifikasyonunu JSON biçiminde göndermeniz için bir yan panel açılır. Manifest dosyanız olarak aşağıdakileri girmek için bu paneli kullanın:
{ "addOns": { "common": { "name": "My First Meet Web Add-on", "logoUrl": "https://fonts.gstatic.com/s/i/googlematerialicons/markunread_mailbox/v6/black-24dp/1x/gm_markunread_mailbox_black_24dp.png" }, "meet": { "web": { "sidePanelUri": "http://localhost:3000/meet/sidepanel", "addOnOrigins": ["http://localhost:3000"] } } } }
Gönder'i tıklayın. Eklenti başarıyla dağıtıldıysa şu mesaj görünür: Deployment "ID" created.
Dağıtımı, sayfanın Dağıtımlar bölümünde doğrulayın.
Web için Meet Eklentileri SDK'sını test etme
Web için Meet Eklentileri SDK'sının tamamını test etmek için Google Meet'i çalıştırın ve uygulamanın beklendiği gibi çalıştığını doğrulayın. Bunun için:
- Meet'e gidip yeni bir toplantı başlatın.
- Etkinlikler'i tıklayın.
- Eklentileriniz bölümünde, İlk Meet Web eklentim'i görürsünüz. Eklentiyi çalıştırmak için bu simgeyi seçin.
- Eklenti çalıştırıldığında yan panel açılır.
- Google Hesabınızı kullanarak uygulamada oturum açın. Oturum açtıktan sonra Yeni Proje'yi tıklayın.
- Oluşturulan Adsız Proje'yi seçin.
- Yan panelde Etkinliği Başlat'ı tıklayın.
- Başlatıldığında yan panel kapanır ve ana sahne açılır.
Eklenti artık beklendiği gibi çalışır, ancak bu yalnızca uygulama üzerinden oturum açan kullanıcı için geçerlidir (5. Adım). Etkinliğe Meet üzerinden katılan diğer katılımcılar aynı oturumu ilk kullanıcıyla paylaşamayacakları için uygulamada ortak çalışma yapamazlar. İçeriğin başkalarıyla paylaşılması için daha fazla uygulamaya (ör. jeton paylaşım mekanizması) ihtiyaç vardır.
Temizleme
Bu eğiticide kullanılan kaynaklar için Google Cloud hesabınızın ücretlendirilmesini istemiyorsanız Cloud projesini silmenizi öneririz.
- Google Cloud konsolunda Kaynakları yönetin sayfasına gidin. Menü > IAM ve Yönetici > Kaynakları Yönet'i tıklayın.
- Proje listesinden silmek istediğiniz projeyi seçin ve Sil'i tıklayın.
- İletişim kutusuna proje kimliğini yazın, ardından projeyi silmek için Kapat'ı tıklayın.
İlgili konular
Ortak çalışma hakkında daha fazla bilgi edinmek için Meet eklentisi kullanarak ortak çalışma başlıklı makaleyi inceleyin.
Ekran paylaşımı hakkında daha fazla bilgi edinmek için Ekran paylaşımı aracılığıyla kullanıcılara bir eklenti tanıtma bölümünü inceleyin.