2014-03-04 37 views
1

在iOS應用中, 每當我調用這個函數來打開的應用程序商店,打開App Store鏈接而不離開應用程序,可能嗎?

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms-apps://app-url"]]; 


原來的應用將被停用。 用戶在退出App Store後必須重新啓動原始應用程序。 這是非常不便的安裝方式。

有什麼辦法可以在不離開應用的情況下打開App Store鏈接?


例如,打開彈出窗口, 安裝後只需關閉彈出窗口,我就可以看到原來的應用程序。


更新時間:

我發現了一個很好的例子! 喜歡這個遊戲的彈出。

open app store as in app popup, example

回答

6

是的,我們可以打開一個應用程序商店的鏈接,而無需離開現有的應用程序在IOS 6+。 你可以在下面使用它。

#import <StoreKit/StoreKit.h> 
SKStoreProductViewController *storeController = [[SKStoreProductViewController alloc] init]; 
    storeController.delegate = delegate; 
    NSDictionary *productParameters = @{ SKStoreProductParameterITunesItemIdentifier : appStoreID }; 
[storeController loadProductWithParameters:productParameters completionBlock:^(BOOL result, NSError *error) { 
//Handle response 
} 

感謝

+1

謝謝你就是我想要的!如果你添加這個代碼,也許它會更好。 [self presentViewController:storeController animated:YES completion:nil]; // ^^; –

+0

如果你不想要,塊取決於需求,那麼你可以使用nil。你可以爲它+1並批准我的答案嗎? – Hindu

1

我的版本是在這裏。

1)#import <StoreKit/StoreKit.h>並設置SKStoreProductViewControllerDelegate
2)添加委託應答的方法,

- (void)productViewControllerDidFinish:(SKStoreProductViewController *)viewController 
{ 
    // if user do cancel, close it 
    [viewController dismissViewControllerAnimated:YES completion:nil]; 
} 

3)添加存儲開放代碼。

void SomeClassName::openAppStore(string appStoreId, string appUrl) 
{ 
    // below iOS 6.0 
    NSString *appUrlStatic = [NSString stringWithUTF8String:appUrl.c_str()]; 

    // iOS 6.0 or above, appstore id is 9-digin number 
    NSString *appId = [NSString stringWithUTF8String:appStoreId.c_str()];; 

    // check SKStoreProductViewController API exist or not 
    if(NSClassFromString(@"SKStoreProductViewController")) { 

     SKStoreProductViewController *storeController = [[SKStoreProductViewController alloc] init]; 
     storeController.delegate = self; 

     NSDictionary *productParameters = @{ SKStoreProductParameterITunesItemIdentifier : appId }; 

     [storeController loadProductWithParameters:productParameters completionBlock:^(BOOL result, NSError *error) { 
      if (result) { 
       [self presentViewController:storeController animated:YES completion:nil]; 
      } else { 
       [[[UIAlertView alloc] initWithTitle:@"Error Occur" 
              message:@"Error to open App Store." 
              delegate:nil 
            cancelButtonTitle:@"Ok" 
            otherButtonTitles: nil] show]; 
      } 
     }]; 

     [storeController release]; 

    } else { 
     [[UIApplication sharedApplication] openURL:[NSURL URLWithString:appUrlStatic]]; 
    } 


} 
相關問題