다음 URL은 iOS 8.3 이하에서 열리지 만 작동하지 않으며 iOS 9
let instagramURL = NSURL(string: "instagram://app")
왜 URL이 열리지 않습니까?
답변
iOS 9은 URL 스킴 처리를 약간 변경했습니다. 앱에서 LSApplicationQueriesSchemes
키 를 사용하여 호출 할 URL을 허용 목록에 추가해야 합니다 Info.plist
.
여기에 게시물을 참조하십시오 : http://awkwardhare.com/post/121196006730/quick-take-on-ios-9-url-scheme-changes
주요 결론은 다음과 같습니다.
허용 목록에없는 URL에서 “canOpenURL”메서드를 호출하면이 체계를 처리하도록 등록 된 앱이 설치되어 있어도 “NO”가 반환됩니다. “이 응용 프로그램은 체계 xxx를 쿼리 할 수 없습니다”syslog 항목이 나타납니다.
허용 목록에없는 URL에서 “openURL”메서드를 호출하면 자동으로 실패합니다. “이 응용 프로그램은 체계 xxx를 쿼리 할 수 없습니다”syslog 항목이 나타납니다.
저자는 또한 이것이 OS의 버그이며 애플은 다음 릴리스에서이 문제를 해결할 것이라고 추측합니다.
답변
위에서 말했듯이 정보 plist에 키를 추가하려고합니다. 여기에 대부분의 소셜 네트워크 목록이 있습니다.
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fb</string>
<string>fbapi</string>
<string>fbauth2</string>
<string>fbshareextension</string>
<string>fb-messenger-api</string>
<string>twitter</string>
<string>viber</string>
<string>whatsapp</string>
<string>wechat</string>
<string>line</string>
<string>instagram</string>
<string> instagram-stories</string>
<string>kakaotalk</string>
<string>mqq</string>
<string>vk</string>
<string>comgooglemaps</string>
<string>googlephotos</string>
<string>ha</string>
<string>yammer</string>
</array>
* 처음 3 개 일치 Facebook (FBSDK 4.6) : fbapi, fbauth2, fbshareextension. “Ha”는 스냅 챗입니다
답변
이것은 iOS 9의 새로운 보안 기능입니다 . 자세한 정보는 WWDC 2015 세션 703 을보십시오.
SDK 9로 빌드 된 모든 앱 LSApplicationQueriesSchemes
은 plist 파일에 항목 을 제공 하여 쿼리하려는 구성표를 선언해야합니다.
<key>LSApplicationQueriesSchemes</key>
<array>
<string>urlscheme</string>
<string>urlscheme2</string>
<string>urlscheme3</string>
<string>urlscheme4</string>
</array>
답변
두 개의 앱 TestA 및 TestB를 가정합니다. TestB는 TestA가 설치되어 있는지 조회하려고합니다. “TestA”는 info.plist 파일에 다음 URL 체계를 정의합니다.
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>testA</string>
</array>
</dict>
</array>
두 번째 앱 “TestB”는 다음을 호출하여 “TestA”가 설치되어 있는지 확인합니다.
[[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"TestA://"]];
그러나 “TestA”를 TestB info.plist 파일의 LSApplicationQueriesSchemes 항목에 추가해야하므로 iOS9에서 NO를 반환합니다. 다음 코드를 TestB의 info.plist 파일에 추가하면됩니다.
<key>LSApplicationQueriesSchemes</key>
<array>
<string>TestA</string>
</array>
실제 구현은 https://github.com/gatzsche/LSApplicationQueriesSchemes-Working-Example 에서 찾을 수 있습니다.
답변
세션 703 WWDC 2015에서 :
iOS 9 용 앱을 빌드 할 때 URL 스킴을 계속 사용할 수 있으며 URL 스킴을 호출하려면 앱 Info.plist에서이를 선언해야합니다. 새로운 키가
LSApplicationQueriesSchemes
있으며 여기에 canOpenURL을 사용하려는 스키마 목록을 추가해야합니다.
답변
@Matthieu 답변 (나머지 소셜 URL의 경우 100 % 정확)으로도 공유 대화 상자에서 Facebook을 공유 할 수 없습니다. Facebook SDK에서 반대로 URL 세트를 추가해야했습니다.
<array>
<string>fbapi</string>
<string>fbauth2</string>
<string>fbshareextension</string>
<string>fb-messenger-api</string>
<string>twitter</string>
<string>whatsapp</string>
<string>wechat</string>
<string>line</string>
<string>instagram</string>
<string>kakaotalk</string>
<string>mqq</string>
<string>vk</string>
<string>comgooglemaps</string>
<string>fbapi20130214</string>
<string>fbapi20130410</string>
<string>fbapi20130702</string>
<string>fbapi20131010</string>
<string>fbapi20131219</string>
<string>fbapi20140410</string>
<string>fbapi20140116</string>
<string>fbapi20150313</string>
<string>fbapi20150629</string>
</array>
답변
Swift 4.2 및 Xcode 10.1에서
info.plist에서 CFBundleURLSchemes 및 LSApplicationQueriesSchemes를 추가해야합니다.
-> 프로젝트에서 info.plist를 선택하십시오.
-> 오른쪽 클릭
-> 소스 코드로 열기를 선택하십시오.
아래 스크린 샷을 참조하십시오
-> xml 파일이 열립니다
-> 복사-아래 코드를 붙여 넣고 ID로 바꿉니다.
gmail, fb, twitter 및 링크 된 CFBundleURLSchemes 및 LSApplicationQueriesSchemes
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>li5****5</string>
<string>com.googleusercontent.apps.8***************5f</string>
<string>fb8***********3</string>
<string>twitterkit-s***************w</string>
</array>
</dict>
</array>
<key>FacebookAppID</key>
<string>8*********3</string>
<key>FacebookDisplayName</key>
<string>K************ app</string>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fb-messenger-share-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
<string>twitter</string>
<string>twitterauth</string>
<string>linkedin</string>
<string>linkedin-sdk2</string>
<string>linkedin-sdk</string>
</array>
최종 info.plist 파일은 아래 화면을 참조하십시오