检测使用UIActivityViewController启动的应用程序是哪个

5
当使用UIActivityViewController启动外部应用程序时,如何在completionHandler中检测使用的应用程序?在Apple的文档中提到了一个属性UIActivity.ActivityType,但它似乎只用于检测“内置活动”。如何检测是否启动了WhatsApp Messenger等应用程序?
2个回答

7

在设置UIActivityViewController时,使用completionWithItemsHandler来设置完成闭包,在用户进行选择时调用。

此完成闭包具有四个参数:所选活动(可选)、完成指示器、返回项的可选数组和错误。

所选活动的类型为UIActivity.ActivityType。其rawValue是表示活动的String。如果活动类型不是提供的常量之一,则将其rawValue与您运行某些测试以查看给定活动(如WhatsApp)的值的字符串进行比较。


1
那我怎么知道期望的应用程序名称呢?有没有第三方活动名称列表可以进行比较? - NSAdi
3
就像我之前说的一样,你需要运行你的应用程序并选择 WhatsApp 等选项来查找该值。看看返回的数值是多少。然后,根据需要在你的代码中将该字符串硬编码。 - rmaddy

0

在Objective-C中

您可以使用此代码来了解使用了哪个活动

shareSheetVC.completionWithItemsHandler  = ^(NSString *activityType, BOOL completed, NSArray *returnedItems, NSError *error){
              
       if (completed) {
                 
            NSLog(@"Shared by activity %@", activityType);

        } else {
            NSLog(@"ShareSheet was closed");
        }
       
        if (error) {
            NSLog(@"An Error occured: %@, %@", error.localizedDescription, error.localizedFailureReason);
                 
        }
 };

我使用WhatsApp分享时的输出结果

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接