การใช้โมดูลตำแหน่งของ Pushwoosh ในแอป Android
การเข้าถึงตำแหน่งใน Android มีสองประเภท:
- การเข้าถึงตำแหน่งแบบ เบื้องหน้า (Foreground)
- การเข้าถึงตำแหน่งแบบ เบื้องหลัง (Background)
สำหรับการอัปเดตตำแหน่งของผู้ใช้ใน เบื้องหน้า (foreground) ต้องเป็นไปตามเงื่อนไขข้อใดข้อหนึ่งต่อไปนี้:
- หนึ่งใน activity ของแอปกำลังทำงานอยู่
- มีการเปิดใช้บริการเบื้องหน้า (Foreground service) ที่มี foregroundServiceType = “location” สำหรับแอป
การเข้าถึงแบบ เบื้องหลัง (Background) ช่วยให้แอปสามารถรับตำแหน่งทางภูมิศาสตร์ของผู้ใช้ได้ในขณะที่แอปไม่ได้ทำงาน และไม่มีบริการเบื้องหน้าประเภท “location” เปิดใช้งานสำหรับแอปนั้น
การเข้าถึงตำแหน่งแบบเบื้องหน้า (Foreground)
Anchor link toหากคุณต้องการใช้โมดูลตำแหน่งของ Pushwoosh เพื่ออัปเดตตำแหน่งของผู้ใช้เฉพาะเมื่อแอปของคุณทำงานอยู่ ให้เพิ่มโมดูล pushwoosh-location
ไปยังไฟล์ app/build.gradle ของคุณ:
implementation 'com.pushwoosh:pushwoosh-location:6.+'
หากต้องการเปิดใช้งานโมดูล ให้ใช้เมธอด startLocationTracking
:
PushwooshLocation.startLocationTracking();
PushwooshLocation.startLocationTracking()
การใช้ ForegroundService เพื่อขอตำแหน่งเมื่อแอปพลิเคชันของคุณทำงานในเบื้องหลัง
Anchor link toหากต้องการเปิด ForegroundService เมื่อมีการเรียกใช้เมธอด startLocationTracking
ซึ่งช่วยให้สามารถรับตำแหน่งทางภูมิศาสตร์ของผู้ใช้เมื่อแอปพลิเคชันของคุณทำงานในเบื้องหลัง ให้ทำตามขั้นตอนที่อธิบายไว้ใน ย่อหน้าก่อนหน้า จากนั้นเพิ่ม meta-data ต่อไปนี้ลงในไฟล์ AndroidManifest.xml ของคุณ:
...<application>.... <meta-data android:name="com.pushwoosh.start_foreground_service" android:value="true" />...</application>...
เมื่อ ForegroundService เริ่มทำงาน จะมีการสร้างการแจ้งเตือนขึ้น คุณสามารถปรับแต่งการแจ้งเตือนได้โดยระบุ meta-data เพิ่มเติมในไฟล์ AndroidManifest.xml ของโปรเจกต์คุณ:
...<application>.... <meta-data android:name="com.pushwoosh.foreground_service_notification_text" android:value="My notification text" /> <meta-data android:name="com.pushwoosh.foreground_service_notification_channel_name" android:value="My notification channel name" />...</application>...
การเข้าถึงตำแหน่งแบบเบื้องหลัง (Background)
Anchor link toสำหรับการอัปเดตตำแหน่งทางภูมิศาสตร์ในเบื้องหลังโดยไม่มีการเปิดใช้ ForegroundService คุณจะต้องทำสิ่งต่อไปนี้:
- ได้รับการอนุมัติจาก Google Play สำหรับการเข้าถึงตำแหน่งในเบื้องหลังของแอปของคุณ (ดูรายละเอียดที่ https://support.google.com/googleplay/android-developer/answer/9799150?hl=en)
- เพิ่ม permission ในไฟล์ AndroidManifest.xml ของคุณ:
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
- ขอสิทธิ์จากผู้ใช้ในการอัปเดตตำแหน่งในเบื้องหลังหลังจากที่ได้รับสิทธิ์สำหรับตำแหน่งเบื้องหน้าแล้ว (ดูคำแนะนำในเอกสารสำหรับนักพัฒนา Android: https://developer.android.com/training/location/permissions#background-dialog-target-android-11 )
ในโมดูล pushwoosh-location
เวอร์ชัน 6.3.2 เราได้เพิ่มเมธอดเพิ่มเติมที่จะเปิดหน้าจอการตั้งค่าสิทธิ์การเข้าถึงตำแหน่งหากเป็นไปตามเงื่อนไขต่อไปนี้:
- แอปได้รับสิทธิ์การเข้าถึงตำแหน่งในเบื้องหน้าแล้ว
- มี user-permission
ACCESS_BACKGROUND_LOCATION
อยู่ในไฟล์ AndroidManifest.xml ของแอป
เรียกใช้เมธอดดังนี้:
PushwooshLocation.requestBackgroundLocationPermission();
PushwooshLocation.requestBackgroundLocationPermission()
ประเภทของสิทธิ์ใน Android 12+
Anchor link toตั้งแต่ Android 12 เป็นต้นไป เมื่อมีการขอสิทธิ์การเข้าถึงตำแหน่งในเบื้องหน้า ผู้ใช้สามารถเลือกได้ว่าแอปจะรับตำแหน่งของผู้ใช้ได้บ่อยแค่ไหนและด้วยความแม่นยำระดับใด
สิทธิ์ดังกล่าวมีสองประเภท:
- ตำแหน่งโดยประมาณ (Approximate location) ซึ่งเทียบเท่ากับ ACCESS_COARSE_LOCATION
- ตำแหน่งที่แม่นยำ (Precise location) ซึ่งเทียบเท่ากับ ACCESS_FINE_LOCATION และ ACCESS_COARSE_LOCATION
แบ่งปันความคิดเห็นของคุณกับเรา
Anchor link toความคิดเห็นของคุณช่วยให้เราสร้างประสบการณ์ที่ดีขึ้น เราจึงยินดีรับฟังหากคุณพบปัญหาใดๆ ระหว่างขั้นตอนการผสานรวม SDK หากคุณประสบปัญหาใดๆ โปรดอย่าลังเลที่จะแบ่งปันความคิดเห็นของคุณกับเรา ผ่านแบบฟอร์มนี้