update get APNS token for ios platform

This commit is contained in:
kanyanat 2025-12-02 13:57:46 +07:00
parent 601bd7fb56
commit d24c733897
3 changed files with 129 additions and 84 deletions

20
App.js
View File

@ -7,7 +7,7 @@
*/
import React, { Component } from 'react'
import { StatusBar, StyleSheet, Text, TouchableOpacity } from 'react-native'
import { StatusBar, StyleSheet, Text, TouchableOpacity, Platform } from 'react-native'
import MainNav from './src/navigation/MainNav'
import messaging from "@react-native-firebase/messaging"
import { persistor, store } from './src/redux/store'
@ -86,6 +86,24 @@ class App extends Component {
try {
await this.setPermission()
if (Platform.OS === 'ios') {
let apnsToken = await messaging().getAPNSToken();
let retry = 0;
while (!apnsToken && retry < 10) {
console.log('Waiting for APNs token...');
await new Promise(resolve => setTimeout(resolve, 1000));
apnsToken = await messaging().getAPNSToken();
retry++;
}
console.log('APNs Token:', apnsToken);
if (!apnsToken) {
console.log('Failed to get APNs token after retries');
// Decide if we want to return here or try anyway.
// Usually if APNs is missing, getToken will fail.
}
}
// ใช้ getToken() แทน getAPNSToken()
const fcmToken = await messaging().getToken();
console.log('FCM Token:', fcmToken);

View File

@ -64,6 +64,19 @@ class LoginScreen extends Component {
if (enabled) {
console.log('Notification permission granted.');
await messaging().registerDeviceForRemoteMessages();
if (Platform.OS === 'ios') {
let apnsToken = await messaging().getAPNSToken();
let retry = 0;
while (!apnsToken && retry < 10) {
console.log('Waiting for APNs token...');
await new Promise(resolve => setTimeout(resolve, 1000));
apnsToken = await messaging().getAPNSToken();
retry++;
}
console.log('APNs Token:', apnsToken);
}
fcmToken = await messaging().getToken();
console.log('fcmToken >>>> ', fcmToken)
} else {

View File

@ -1,5 +1,5 @@
import React, { Component } from 'react'
import { ScrollView, TouchableOpacity, View, Alert } from 'react-native'
import { ScrollView, TouchableOpacity, View, Alert, Platform } from 'react-native'
import Image from 'react-native-fast-image'
import { CustomStepIndicator } from '../../components/StepIndicator'
import GetWidthHeightDevice from '../../components/GetWidthHeightDevice'
@ -48,6 +48,19 @@ class RegisterProfileScreen extends Component {
initNotification = async () => {
await this.setPermission()
if (Platform.OS === 'ios') {
let apnsToken = await messaging().getAPNSToken();
let retry = 0;
while (!apnsToken && retry < 10) {
console.log('Waiting for APNs token...');
await new Promise(resolve => setTimeout(resolve, 1000));
apnsToken = await messaging().getAPNSToken();
retry++;
}
console.log('APNs Token:', apnsToken);
}
const fcmToken = await messaging().getToken()
console.log('fcmToken', fcmToken)
if (fcmToken) {
@ -108,7 +121,8 @@ class RegisterProfileScreen extends Component {
'',
t('register_success'),
[
{ text: 'OK', onPress: () => {
{
text: 'OK', onPress: () => {
/*checkPaymentMeter()
.then(result => {
if(result.data){