programing

iOS 9에서 URL SCHEMPH로 Instagram 앱을 열지 않음

closeapi 2023. 5. 11. 21:27
반응형

iOS 9에서 URL SCHEMPH로 Instagram 앱을 열지 않음

다음 URL은 iOS 8.3 이하에서 열리지만 작동하지 않고 iOS 9

let instagramURL = NSURL(string: "instagram://app")

URL이 열리지 않는 이유는 무엇입니까?

스킴 .iOS 9는 URL 스킴 처리에 약간의 변경을 가했습니다.당신은 의 앱이 을 사용하여 로 만들어야 .LSApplicationQueriesSchemes당신의 키력을 하세요.Info.plist.

여기 게시물을 참조하십시오. http://awkwardhare.com/post/121196006730/quick-take-on-ios-9-url-scheme-changes

주요 결론은 다음과 같습니다.

화이트리스트에 없는 URL에서 "canOpenURL" 메서드를 호출하면 이 스킴을 처리하도록 등록된 앱이 설치되어 있더라도 "아니오"를 반환합니다."이 앱은 xxx 구성표에 대해 쿼리할 수 없습니다." syslog 항목이 나타납니다.

화이트리스트에 없는 URL에서 "openURL" 메서드를 호출하면 자동으로 실패합니다."이 앱은 xxx 구성표에 대해 쿼리할 수 없습니다." syslog 항목이 나타납니다.

저자는 또한 이것이 OS의 버그이며 애플이 후속 릴리스에서 이를 수정할 것이라고 추측합니다.

위에서 말한 것처럼, 당신은 인포리스트에 키를 추가하고 싶습니다. 여기 대부분의 소셜 네트워크에 대한 목록이 있습니다.

<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>

fbapi, fbauth2, fbshare 확장의 Facebook(FBSDK 4.6)과 처음 3가지 일치합니다."하"는 스냅챗을 위한 것입니다.

iOS 9의 새로운 보안 기능입니다. 자세한 내용은 WWDC 2015 Session 703을 참조하십시오.

은 SDK 9를 .LSApplicationQueriesSchemes쿼리하려는 구성표를 선언하는 항목입니다.

<key>LSApplicationQueriesSchemes</key>
<array>
 <string>urlscheme</string>
 <string>urlscheme2</string>
 <string>urlscheme3</string>
 <string>urlscheme4</string>
</array> 

테스트 A와 테스트 B 두 앱을 가정합니다.테스트 B에서 테스트 A가 설치되어 있는지 쿼리하려고 합니다."TestA"는 info.plist 파일에서 다음 URL 체계를 정의합니다.

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>testA</string>
        </array>
    </dict>
</array>

두 번째 앱 "테스트 B"는 다음을 호출하여 "테스트 A"가 설치되어 있는지 확인합니다.

[[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"TestA://"]];

그러나 "TestA"를 TestB의 info.plist 파일에 있는 LSAapplicationQuerySches 항목에 추가해야 하기 때문에 일반적으로 iOS9에서 NO를 반환합니다.이 작업은 TestB의 info.plist 파일에 다음 코드를 추가하여 수행합니다.

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>TestA</string>
</array>

실행 중인 구현은 https://github.com/gatzsche/LSApplicationQueriesSchemes-Working-Example 에서 확인할 수 있습니다.

시작, 세션 703 WWDC 2015:

사용할 수 . 앱plist해야 합니다.OS 9용 앱을 구축할 때 URL 체계를 계속 사용할 수 있으며 URL 체계를 호출하려면 앱 Info.plist에서 선언해야 합니다.새로운 열쇠가 있습니다.LSApplicationQueriesSchemes이 되고 싶은 .vmdk URL.

예를 들어, FB의 경우.

공유 대화 상자의 Facebook 공유는 @Mathieu 답변(나머지 소셜 URL에 대해 100% 정확함)에도 실패합니다.나는 페이스북 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에서 CFBundle을 추가해야 합니다.URL 스키마 및 LSA ApplicationQueryScheme.

--> 프로젝트에서 info.plist를 선택합니다.

--> 오른쪽 클릭,

--> 소스 코드열기 선택

아래 스크린샷 참조

여기에 이미지 설명 입력

--> xml 파일이 열립니다.

--> 복사 - 아래 코드를 붙여넣고 ID로 대체합니다.

CF 번들gmail, fb, twitter 및 linked in을 위한 URL 스키마 및 LSA ApplicationQueryScheme.

<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 파일은

여기에 이미지 설명 입력

9.0.x에서 url 체계를 깬 탈옥된 전화기의 버그가 있었다는 것에 주목하는 것이 중요합니다.감옥에서 고장난 장치를 실행하고 있다면 Cydia에서 Patcyh를 업데이트해야 합니다.

전화를 하면 앱을 열 수 있습니다.openURL:또는openURL:options:completionHandler: 이상) 확인 (iOS 10 이상) 조건확인없이직가능사용접부이상▁(▁without가능▁directly▁(▁making사용.canOpenURL:canOpen에 대한 Apple 문서토론 섹션을 읽어보십시오.URL: 다음과 같은 방법:

는 다음 URL에 .LSApplicationQueriesSchemes필요.

내장된 매개 변수로 URL을 지정하는 방법을 설명한 사람은 아무도 없는 것 같습니다.LSA 응용 프로그램에서 특정 URL을 지정할 수 없는 매개 변수가 포함된 URL스키마를 쿼리합니다.예를 들어 보낸 사람의 전자 메일 주소를 전달하는 전자 메일 앱이 있다고 가정합니다.

myemail://mailto?bob@gmail.com

iOS9에서 작동할 수 있는 유일한 방법은 매개 변수를 제거하는 것입니다.

Apple이 캔오픈을 변경했습니다.iOS 9의 URL 메서드입니다. iOS 9 및 iOS 10의 URL 스킴을 확인하는 앱은 Apple에 제출할 때 이 스킴을 선언해야 합니다.

PayPal의 경우 아래 URL 체계를 추가합니다.

여기에 이미지 설명 입력

링크 참조

스위프트 3.1, 스위프트 3.2, 스위프트 4

if let urlFromStr = URL(string: "instagram://app") {
    if UIApplication.shared.canOpenURL(urlFromStr) {
        if #available(iOS 10.0, *) {
            UIApplication.shared.open(urlFromStr, options: [:], completionHandler: nil)
        } else {
            UIApplication.shared.openURL(urlFromStr)
        }
    }
}

Info.plist에서 다음을 추가합니다.

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>instagram</string>
</array>

제가 오늘 제 앱에서 페이스북에 전화를 하려고 했을 때, 저는 그것이 없다는 것을 발견했습니다.LSApplicationQueriesSchemes▁i에 할 수 입니다.Info.plist(Xcode § 8.2.1(8C1002)).는 제가열요어었▁the▁opened를 열었습니다.Info.plistSublime Text를 사용하여 수동으로 파일에 추가한 다음 작동했습니다.키를 찾을 수 없는 경우 직접 추가하십시오.

언급URL : https://stackoverflow.com/questions/30987986/ios-9-not-opening-instagram-app-with-url-scheme

반응형