Ios 应用程序未运行时的通用链接
我正在我的应用程序中实现通用链接。除了应用程序不在后台运行外,其他一切都对我有用。在这种情况下,我如何在我的应用程序中打开特定页面?iOS启动了我的应用程序,但我没有收到任何回拨Ios 应用程序未运行时的通用链接,ios,objective-c,ios9,ios-universal-links,Ios,Objective C,Ios9,Ios Universal Links,我正在我的应用程序中实现通用链接。除了应用程序不在后台运行外,其他一切都对我有用。在这种情况下,我如何在我的应用程序中打开特定页面?iOS启动了我的应用程序,但我没有收到任何回拨 -(BOOL)应用程序:(UIApplication*)应用程序连续性:(nsseractivity*)用户活动恢复处理程序:(void(^)(NSArray*)恢复处理程序 在这个函数中,我都不会用这一行获取任何url NSURL*launchURL=[launchOptions值forkey:uiapplicati
-(BOOL)应用程序:(UIApplication*)应用程序连续性:(nsseractivity*)用户活动恢复处理程序:(void(^)(NSArray*)恢复处理程序
在这个函数中,我都不会用这一行获取任何url
NSURL*launchURL=[launchOptions值forkey:uiapplicationaunchoptionsurlkey]代码>
里面
-(BOOL)应用程序:(UIApplication*)应用程序使用选项完成启动:(NSDictionary*)启动选项
此函数
有人知道我如何获得启动我的应用程序的url吗
当您打开应用程序的通用链接时,谢谢
- (BOOL)application:(UIApplication *)app
openURL:(NSURL *)url
options:(NSDictionary<NSString *,
id> *)options
-(BOOL)应用程序:(UIApplication*)应用程序
openURL:(NSURL*)url
选项:(NSDictionary*)选项
使用通用链接作为参数和选项(如果是)调用。查看详细信息。您需要实施
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation{
url= yourappurl://with some app link data
sourceApplication= //who called your application
}
例如,如果您的应用程序是从facebook messenger调用的,那么您将获得
sourceApplication=@"com.facebook.messenger"
您可以通过以下方式访问您的url
NSDictionary *aux = [launchOptions objectForKey:UIApplicationLaunchOptionsUserActivityDictionaryKey];
if (aux) {
NSUserActivity *activity = [aux objectForKey:@"UIApplicationLaunchOptionsUserActivityKey"];
NSString *urlString = activity.webpageURL.absoluteString;
}
但为了更好地使用,您必须验证此URL,如果可以管理,则返回YES
例如
if([urlString hasPrefix:@"https://myUrl.com"]) {
return YES;
}
。。在此之后,方法
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *))restorationHandler
在Swift 5中,它将被调用,并带有一个它将调用的SceneDelegate
文件:
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { }
当你的应用程序不在后台运行,用户点击一个通用链接时。你能解释一下每件事对我都有效吗?什么对你不起作用?当你的应用在后台时,不会调用didFinishLaunching。您应该研究openURL方法。