我们可以在 iMessage 应用程序中启动 "link" 吗?

Can we launch a "link" in iMessage app?

我有一个 iMessage 应用程序,基本上我想显示一个按钮,按下时启动另一个应用程序,如 Safari 或地图等。

我试过:

if UIApplication.shared.canOpenURL(url){

但 "UIApplication.shared" 仅在主 iOS 应用程序中可用。我的是一个仅限 iMessage 的应用程序。

有什么建议吗?

您可以在 MSMessagesAppViewController 子类中使用 extensionContext 属性 来打开 URL,如下所示:

NSURL *url = [NSURL URLWithString:@"https://www.apple.com/"];
[self.extensionContext openURL:url completionHandler:nil];

我没有对此进行测试,但我使用此方法使用自定义 url 方案从我的 iMessage 扩展应用程序启动我的 iOS 应用程序。我还用它从我的 iMessage 扩展启动了 AppStore。

更新:

既然你说你只想打开地图,你可以试试这个:

#import <MapKit/MapKit.h>

- (void)openMaps {
    CLLocationCoordinate2D coordinates = CLLocationCoordinate2DMake(33.651092f, -117.744250f); // coordinates of your desired location
    MKCoordinateRegion regionSpan = MKCoordinateRegionMakeWithDistance(coordinates, 5000, 5000); // 5000 is the distance in meters
    NSDictionary *options = @{MKLaunchOptionsMapCenterKey: [NSValue valueWithMKCoordinate:regionSpan.center],
                              MKLaunchOptionsMapSpanKey: [NSValue valueWithMKCoordinateSpan:regionSpan.span]};
    MKPlacemark *placemark = [[MKPlacemark alloc] initWithCoordinate:coordinates addressDictionary:nil];
    MKMapItem *mapItem = [[MKMapItem alloc] initWithPlacemark:placemark];
    [mapItem setName:@"Irvine Spectrum Center"];
    [mapItem openInMapsWithLaunchOptions:options];
}

让我知道这是否适合您。