我们可以在 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];
}
让我知道这是否适合您。
我有一个 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];
}
让我知道这是否适合您。