PS:記錄自己工作學(xué)習(xí)中的一些知識(shí);
一媳板、無(wú)法打開(kāi)APP
假設(shè)A(APP)通過(guò)以下代碼嘗試打開(kāi)B(APP)無(wú)效果桑腮。
NSURL *url = [NSURL URLWithString:@"wide://"];
[[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil];
排查
1、B工程中TARTGETS----info---URL Types 是否正確設(shè)置蛉幸,并檢查URL Schemes 是否拼寫(xiě)錯(cuò)誤破讨。2、在A工程中是否將URL Schemes(wide)設(shè)置到白名單中info.plist
<key>LSApplicationQueriesSchemes</key>
<string>wide</string>
二奕纫、iOS13中B(APP)無(wú)法接受A(APP)傳來(lái)的值
在Xcode11新建項(xiàng)目提陶,工程中除了有AppDelegate,默認(rèn)同時(shí)創(chuàng)建SceneDelegate文件匹层。
iOS13 后隙笆,APP的UI生命周期交由SceneDelegate管理,所以下面方法接受不到A傳遞的數(shù)據(jù)升筏。
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options;
解決方法:
通過(guò)以下方法拿到A傳遞的數(shù)據(jù)
SceneDelegate.m
- (void)scene:(UIScene *)scene openURLContexts:(NSSet<UIOpenURLContext *> *)URLContexts {
NSEnumerator *enumerator = [URLContexts objectEnumerator];
UIOpenURLContext *context;
while (context = [enumerator nextObject]) {
NSLog(@"context.URL =====%@",context.URL);
NSLog(@"context.options.sourceApplication ===== %@",context.options.sourceApplication);
}
}