我都快疯了…我测试了使用Firebase的Flutter应用程序,一切都运行得很好。在每个模拟器上,在真实设备上,在TestFlight中。一切正常。
苹果评测员在尝试上传内容到Firebase时总是出现错误,但error
只显示:
an unknown error occurred please check the server response
这是error
出现的地方:
Future<Memory?> addMemory({
required BuildContext context,
required String title,
required List<String> imageFilePaths,
required DateTime dateTime,
required String? story,
int? sortIndexIfEditing,
}) async {
try {
Year currentYear =
Provider.of<DataProvider>(context, listen: false).getCurrentYear();
Month currentMonth =
Provider.of<DataProvider>(context, listen: false).getCurrentMonth();
int currentMonthIndex = currentMonth.month;
String uid = AuthService.currentUser!.uid;
List<String> imageLocations = [];
for (String path in imageFilePaths) {
String uidForLocation = Uuid().v1();
String imageLocation =
'$uid/${currentYear.id}/${currentMonth.id}/$uidForLocation';
await FirebaseStorage.instance.ref(imageLocation).putFile(
File(path),
);
imageLocations.add(imageLocation);
}
Memory? memoryToReturn = await _addMemoryToDatabse(
context: context,
imageLocations: imageLocations,
currentYear: currentYear,
currentMonthIndex: currentMonthIndex,
title: title,
dateTime: dateTime,
story: story,
sortIndexIfEditing: sortIndexIfEditing,
);
return memoryToReturn;
} on FirebaseException catch (e) {
print('addMemory failed: ' + e.message.toString());
AlertService.showSnackBar(
title: 'Ups, hier ist etwas schiefgelaufen...',
description: e.message.toString(),
isSuccess: false,
);
return null;
}
}
不是关于Security Rules
,已经检查过了:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}
这个error
还意味着什么?我希望我能提供给你更多的信息,但我也就这些了。
如果您想访问TestFlight,请告诉我您的电子邮件,以便您可以自己测试。
正如Frank所建议的,这是Firebase Storage的一个已知问题。
这是关于同一情况的另一个SO-Question:
App Store审核小组报告'使用Firebase存储时阻止图像加载的错误
顺便说一句,我的应用刚刚被接受了。我把Security Rules
改成了allow read, write: if true
,这是你不应该做的做的。在它被接受后,我把它改回安全规则。
我不知道是否真的有auth
问题,因为我的Firebase-Log
没有显示任何拒绝。