UIActivityViewController возвращает «выполнено» как истинное, даже если пользователь отменил действие
Мы используем UIActivityViewController для обмена URL-адресом и текстом из нашего приложения. Мы используем блок завершения, как определено ниже, чтобы определить, успешно ли выполнено задание или нет.
UIActivityViewController *shareActivity = [[UIActivityViewController alloc] initWithActivityItems:@[ textActivity, urlActivity ] applicationActivities:nil];
[shareActivity setCompletionWithItemsHandler:^(UIActivityType __nullable activityType, BOOL completed, NSArray *__nullable returnedItems, NSError *__nullable activityError) {
if (activityError) {
// show an alert
return;
}
if (completed && activityType) {
// track the activity type
// show an alert
}
}];
Как показано в приведенном выше коде, мы показываем предупреждение, чтобы пользователь понял, что действие завершено. Мы также отслеживаем активность, которая была сделана. Приведенный выше код прекрасно работает для публикации в приложениях, таких как Twitter, Facebook, Mail, Message, Notes, Slack и т. Д. Но для некоторых действий, упомянутых ниже, он не выполняется, поскольку флаг завершения считается «истинным», даже если пользователь отменил действие:
Сбой деятельности:
- Напоминания (стандартное приложение iOS)
- почтовое приложение Outlook
- WhatsApp
Возможно, существует больше приложений, которые могут давать сбой, но я не смог найти указанные выше приложения, поскольку они установлены на моем устройстве.
Есть ли способ решить эту проблему?