ข้ามไปยังเนื้อหา

การใช้โมดูลตำแหน่งของ Pushwoosh ในแอป Android

การเข้าถึงตำแหน่งใน Android มีสองประเภท:

  • การเข้าถึงตำแหน่งแบบ เบื้องหน้า (Foreground)
  • การเข้าถึงตำแหน่งแบบ เบื้องหลัง (Background)

สำหรับการอัปเดตตำแหน่งของผู้ใช้ใน เบื้องหน้า (foreground) ต้องเป็นไปตามเงื่อนไขข้อใดข้อหนึ่งต่อไปนี้:

  • หนึ่งใน activity ของแอปกำลังทำงานอยู่
  • มีการเปิดใช้บริการเบื้องหน้า (Foreground service) ที่มี foregroundServiceType = “location” สำหรับแอป

การเข้าถึงแบบ เบื้องหลัง (Background) ช่วยให้แอปสามารถรับตำแหน่งทางภูมิศาสตร์ของผู้ใช้ได้ในขณะที่แอปไม่ได้ทำงาน และไม่มีบริการเบื้องหน้าประเภท “location” เปิดใช้งานสำหรับแอปนั้น

การเข้าถึงตำแหน่งแบบเบื้องหน้า (Foreground)

Anchor link to

หากคุณต้องการใช้โมดูลตำแหน่งของ Pushwoosh เพื่ออัปเดตตำแหน่งของผู้ใช้เฉพาะเมื่อแอปของคุณทำงานอยู่ ให้เพิ่มโมดูล pushwoosh-location ไปยังไฟล์ app/build.gradle ของคุณ:

build.gradle
implementation 'com.pushwoosh:pushwoosh-location:6.+'

หากต้องการเปิดใช้งานโมดูล ให้ใช้เมธอด 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();

ประเภทของสิทธิ์ใน Android 12+

Anchor link to

ตั้งแต่ Android 12 เป็นต้นไป เมื่อมีการขอสิทธิ์การเข้าถึงตำแหน่งในเบื้องหน้า ผู้ใช้สามารถเลือกได้ว่าแอปจะรับตำแหน่งของผู้ใช้ได้บ่อยแค่ไหนและด้วยความแม่นยำระดับใด

สิทธิ์ดังกล่าวมีสองประเภท:

  1. ตำแหน่งโดยประมาณ (Approximate location) ซึ่งเทียบเท่ากับ ACCESS_COARSE_LOCATION
  2. ตำแหน่งที่แม่นยำ (Precise location) ซึ่งเทียบเท่ากับ ACCESS_FINE_LOCATION และ ACCESS_COARSE_LOCATION

แบ่งปันความคิดเห็นของคุณกับเรา

Anchor link to

ความคิดเห็นของคุณช่วยให้เราสร้างประสบการณ์ที่ดีขึ้น เราจึงยินดีรับฟังหากคุณพบปัญหาใดๆ ระหว่างขั้นตอนการผสานรวม SDK หากคุณประสบปัญหาใดๆ โปรดอย่าลังเลที่จะแบ่งปันความคิดเห็นของคุณกับเรา ผ่านแบบฟอร์มนี้