我使用 Angular 14 作為前端,使用 Laravel 8 作為后端。使用 Firebase 進行聊天功能。問題是,聊天記錄顯示在筆記本電腦/臺式機和 Android 手機中,但未顯示在 Iphone 中。
幾秒的小解說視頻
https://www.loom.com/share/e57b9b47ee924a4aaea26e6c94a03514
<div class="checkbox-item disabled" *ngIf="jobOffer.assign_to_id != null">
<a type="button" class="btn btn-outline-success"
(click)="getSetChat(item.offer_by.id, jobOffer.id)">Message</a>
</div>
getSetChat(toId: any, projectid: any): void {
let obj = {
to_id: toId,
job_post_id: projectid
}
this.ds.getSetChat(obj).subscribe((resp: any) => {
if (resp.success) {
this.route.navigate(['/profile/offer-chat/' resp.data.id]);
}
})
}
onChildChanged(ref(this.db, '/chats'), (resp) => {
this.chats = [];
resp.forEach((element) => {
console.log('change', element.val());
const data = element.val();
const chat: any = {};
chat.nickname = data["nickname"];
chat.date = formatDate(data["date"], 'yyyy-MM-dd hh:mm:ss', 'en-US');
chat.type = data['type'];
chat.message = data['message'];
this.chats.push(chat);
this.scroolToEnd();
});
和
get(ref(this.db, `chats/${this.roomname}`)).then((re) => {
console.log('chatsssss', re.toJSON());
re.forEach((e) => {
const childKey = e.key;
const data = e.val();
const chat: any = {};
chat.nickname = data["nickname"];
chat.date = formatDate(data["date"], 'yyyy-MM-dd hh:mm:ss', 'en-US');
chat.type = data['type'];
chat.message = data['message'];
this.chats.push(chat);
console.log("childKey", chat);
this.scroolToEnd();
});
uj5u.com熱心網友回復:
這樣做,它會作業
onChildChanged(ref(this.db, '/chats'), (resp) => {
this.chats = [];
if( this.iOS() ){
//IOS
resp.forEach((element) => {
console.log('change', element.val());
const data = element.val();
const chat: any = {};
chat.nickname = data["nickname"];
// chat.date = formatDate(data["date"], 'yyyy-MM-dd hh:mm:ss', 'en-US');
chat.date = this.iosDate(data["date"]);
chat.type = data['type'];
chat.message = data['message'];
this.chats.push(chat);
this.scroolToEnd();
});
}else{
// not IOS
resp.forEach((element) => {
console.log('change', element.val());
const data = element.val();
const chat: any = {};
chat.nickname = data["nickname"];
chat.date = formatDate(data["date"], 'yyyy-MM-dd hh:mm:ss', 'en-US');
chat.type = data['type'];
chat.message = data['message'];
this.chats.push(chat);
this.scroolToEnd();
});
}
});
和
get(ref(this.db, `chats/${this.roomname}`)).then((re) => {
console.log('chatsssss', re.toJSON());
if( this.iOS() ){
//IOS
re.forEach((e) => {
const childKey = e.key;
const data = e.val();
const chat: any = {};
chat.nickname = data["nickname"];
// chat.date = formatDate(data["date"], 'yyyy-MM-dd hh:mm:ss', 'en-US');
chat.date = this.iosDate(data["date"]);
chat.type = data['type'];
chat.message = data['message'];
this.chats.push(chat);
console.log("childKey", chat);
this.scroolToEnd();
});
}else{
// notIOS
re.forEach((e) => {
const childKey = e.key;
const data = e.val();
const chat: any = {};
chat.nickname = data["nickname"];
chat.date = formatDate(data["date"], 'yyyy-MM-dd hh:mm:ss', 'en-US');
chat.type = data['type'];
chat.message = data['message'];
this.chats.push(chat);
console.log("childKey", chat);
this.scroolToEnd();
});
}
});
}
iosDate(date:any){
var dateDays = date.split(" ")[0]
var day = dateDays.split("-")[2]
var month = dateDays.split("-")[1]
var year = dateDays.split("-")[0]
var dateHours = date.split(" ")[1]
var hour = dateHours.split(":")[0]
var minutes = dateHours.split(":")[1]
var seconds = dateHours.split(":")[2]
var hoursString = ""
return `${year}-${month}-${day} ${hour}:${minutes}:${seconds}`
}
iOS() {
return [
'iPad Simulator',
'iPhone Simulator',
'iPod Simulator',
'iPad',
'iPhone',
'iPod'
].includes(navigator.platform)
// iPad on iOS 13 detection
|| (navigator.userAgent.includes("Mac") && "ontouchend" in document)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/532593.html
