ios - কিভাবে অ্যাপ স্টোর এ অ্যাপস লিঙ্ক করবেন




objective-c app-store (15)

2015 এর গ্রীষ্মের জন্য ...

-(IBAction)clickedUpdate
{
    NSString *simple = @"itms-apps://itunes.apple.com/app/id1234567890";
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:simple]];
}

'id1234567890' দিয়ে 'id' এবং 'দশ নম্বর সংখ্যা' দিয়ে প্রতিস্থাপন করুন।

  1. এই সব ডিভাইসে পুরোপুরি কাজ করে।

  2. এটা সরাসরি অ্যাপ স্টোর থেকে যায় না, কোন পুনঃনির্দেশনা।

  3. সব জাতীয় দোকানে জন্য ঠিক আছে।

  4. loadProductWithParameters ব্যবহার করার জন্য আপনাকে এটি সরানো উচিত, তবে যদি লিঙ্কের উদ্দেশ্যটি অ্যাপটি আপডেট করা হয় তবে আপনি প্রকৃতপক্ষে এর ভিতরে আছেন: এটি সম্ভবত "পুরানো ফ্যাশন" পদ্ধতিটি ব্যবহার করা আরও ভাল।

আমি আমার আইফোন খেলার একটি বিনামূল্যে সংস্করণ তৈরি করছি। আমি বিনামূল্যে সংস্করণের ভিতরে একটি বোতাম চাই যা অ্যাপ স্টোরে প্রদত্ত সংস্করণে লোকেদের নিয়ে যায়। আমি একটি স্ট্যান্ডার্ড লিঙ্ক ব্যবহার করে

http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=300136119&mt=8

আইফোন প্রথম Safari খোলার, এবং তারপর অ্যাপ্লিকেশন দোকান। আমি অন্যান্য অ্যাপ্লিকেশনগুলি ব্যবহার করেছি যা সরাসরি অ্যাপ স্টোর খুলতে পারে, তাই আমি জানি এটি সম্ভব।

কোন ধারনা? অ্যাপ স্টোরের জন্য ইউআরএল স্কিম কি?


অন্তত iOS 9 এবং উপরে

  • অ্যাপ স্টোর সরাসরি খুলুন

একটি অ্যাপ্লিকেশন

itms-apps://itunes.apple.com/app/[appName]/[appID]

বিকাশকারী এর অ্যাপ্লিকেশন তালিকা

itms-apps://itunes.apple.com/developer/[developerName]/[developerID]

আপনি যদি বিকাশকারীর অ্যাপ্লিকেশানগুলির সাথে লিঙ্ক করতে চান এবং বিকাশকারীর নামটিতে বিরামচিহ্ন বা স্থান রয়েছে (উদাহরণস্বরূপ ডেভেলপমেন্ট কোম্পানি, এলএলসি) আপনার URL টি এমনভাবে তৈরি করে:

itms-apps://itunes.com/apps/DevelopmentCompanyLLC

অন্যথায় এটি iOS 4.3.3 এ "এই অনুরোধ প্রক্রিয়া করা যাবে না" প্রদান করে


আপনি লিঙ্ক স্টোরের মাধ্যমে অ্যাপ স্টোর বা আইটিউনসগুলির একটি নির্দিষ্ট আইটেমের লিঙ্ক পেতে পারেন: http://itunes.apple.com/linkmaker/


এই কাজ করছে এবং সরাসরি ios5 লিঙ্কিং

NSString *iTunesLink = @"http://itunes.apple.com/app/baseball-stats-tracker-touch/id490256272?mt=8";  
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:iTunesLink]];

এই কোডটি iOS এ অ্যাপ স্টোর লিঙ্ক তৈরি করে

NSString *appName = [NSString stringWithString:[[[NSBundle mainBundle] infoDictionary]   objectForKey:@"CFBundleName"]];
NSURL *appStoreURL = [NSURL URLWithString:[NSString stringWithFormat:@"itms-apps://itunes.com/app/%@",[appName stringByReplacingOccurrencesOfString:@" " withString:@""]]];

Mac এ http দিয়ে এটিএম-অ্যাপস প্রতিস্থাপন করুন:

NSURL *appStoreURL = [NSURL URLWithString:[NSString stringWithFormat:@"http:/itunes.com/app/%@",[appName stringByReplacingOccurrencesOfString:@" " withString:@""]]]; 

আইওএস খুলুন ইউআরএল:

[[UIApplication sharedApplication] openURL:appStoreURL];

ম্যাক:

[[NSWorkspace sharedWorkspace] openURL:appStoreURL];

একাধিক ওএস এবং একাধিক প্ল্যাটফর্ম সমর্থন করার সময় একটি লিঙ্ক তৈরি করা একটি জটিল সমস্যা হতে পারে। উদাহরণস্বরূপ, WebObjects iOS 7 (তাদের মধ্যে কিছু) সমর্থিত নয়, আপনার তৈরি করা কিছু লিঙ্ক অন্য দেশ স্টোরটি ব্যবহারকারীর ইত্যাদি খুলবে।

iLink নামে একটি ওপেন সোর্স লাইব্রেরি রয়েছে যা আপনাকে সাহায্য করতে পারে।

এই লাইব্রেরীর সুবিধাগুলি হল যে লিঙ্কটি খুঁজে পাওয়া এবং রান সময় তৈরি করা হবে (লাইব্রেরিটি অ্যাপ্লিকেশন আইডি ও এটির চলমান OS এবং এটি কোন লিঙ্কটি তৈরি করা উচিত তা নির্ধারণ করবে)। এর মধ্যে সর্বোত্তম বিন্দু এটি যে এটি ব্যবহার করার আগে আপনাকে প্রায় কনফিগার করার দরকার নেই যাতে এটি ত্রুটিযুক্ত এবং সর্বদা কাজ করবে। এটিও দুর্দান্ত তবে যদি আপনার একই প্রকল্পে কয়েকটি লক্ষ্য থাকে তবে আপনাকে কোন অ্যাপ্লিকেশন আইডি বা লিঙ্কটি ব্যবহার করতে হবে তা মনে রাখতে হবে না। এই লাইব্রেরীটি ব্যবহারকারীর কাছে সম্মতি জানায় যে যদি স্টোরটিতে একটি নতুন সংস্করণ থাকে তবে এটি অ্যাপটির জন্য আপগ্রেড পৃষ্ঠাতে সরাসরি ইঙ্গিত করে তবে এটি সরাসরি একটি সহজ ফ্ল্যাগের মাধ্যমে বন্ধ করে দেওয়া হয়।

আপনার প্রোজেক্টে ২ লাইব্রেরি ফাইলগুলি অনুলিপি করুন (iLink.h & iLink.m)।

আপনার appDelegate.m এ:

#import "iLink.h"

+ (void)initialize
{
    //configure iLink
    [iLink sharedInstance].globalPromptForUpdate = YES; // If you want iLink to prompt user to update when the app is old.
}

এবং সেই স্থানটিতে আপনি রেটিং পৃষ্ঠাটি খুলতে চান উদাহরণস্বরূপ:

[[iLink sharedInstance] iLinkOpenAppPageInAppStoreWithAppleID: YOUR_PAID_APP_APPLE_ID]; // You should find YOUR_PAID_APP_APPLE_ID from iTunes Connect 

একই ফাইলে iLink.h আমদানি করতে ভুলবেন না।

সেখানে পুরো লাইব্রেরির জন্য খুব ভাল ডক এবং আইফোন এবং ম্যাকের জন্য একটি উদাহরণ প্রকল্প রয়েছে।


এক্সকোড 9.1 এবং সুইফ্ট 4 এর জন্য:

  1. আমদানি StoreKit:
import StoreKit

2. প্রোটোকল গঠন

SKStoreProductViewControllerDelegate

3. প্রোটোকল পরিপূরক

func openStoreProductWithiTunesItemIdentifier(identifier: String) {
    let storeViewController = SKStoreProductViewController()
    storeViewController.delegate = self

    let parameters = [ SKStoreProductParameterITunesItemIdentifier : identifier]
    storeViewController.loadProduct(withParameters: parameters) { [weak self] (loaded, error) -> Void in

        if loaded {
            // Parent class of self is UIViewContorller
            self?.present(storeViewController, animated: true, completion: nil)
        }
    }   
}

3.1

func productViewControllerDidFinish(_ viewController: SKStoreProductViewController) {
    viewController.dismiss(animated: true, completion: nil)
}
  1. ব্যবহারবিধি:
openStoreProductWithiTunesItemIdentifier(identifier: "here_put_your_App_id")

বিঃদ্রঃ:

আপনার অ্যাপের সঠিক আইডিটি প্রবেশ করা খুবই গুরুত্বপূর্ণ। কারণ এই কারণটি ত্রুটি (ত্রুটি লগটি দেখায় না, তবে এর জন্য কিছু ভাল কাজ করে না)


এটি অ্যাপ স্টোরে অন্য বিদ্যমান অ্যাপ্লিকেশন পুনঃনির্দেশ / লিঙ্ক করার সহজ এবং ছোট উপায়।

 NSString *customURL = @"http://itunes.apple.com/app/id951386316";

 if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:customURL]])
 {
       [[UIApplication sharedApplication] openURL:[NSURL URLWithString:customURL]];
 } 

এটি আমার জন্য পুরোপুরি অ্যাপ আইডি ব্যবহার করে কাজ করেছে:

 NSString *urlString = [NSString stringWithFormat:@"http://itunes.apple.com/app/id%@",YOUR_APP_ID];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];

পুনঃনির্দেশের সংখ্যা জিরো।


বেশ কয়েকটি উত্তর 'এটিএম' বা 'এটিএম-অ্যাপস' ব্যবহার করে সুপারিশ করে তবে এই অনুশীলনটি বিশেষভাবে অ্যাপল দ্বারা প্রস্তাবিত নয়। অ্যাপ স্টোরটি খুলতে তারা কেবল নিম্নলিখিত উপায়গুলি অফার করে:

তালিকা 1 একটি অ্যাপ্লিকেশন থেকে অ্যাপ স্টোর চালু করা

NSString *iTunesLink = @"https://itunes.apple.com/us/app/apple-store/id375380948?mt=8";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:iTunesLink]];

https://developer.apple.com/library/ios/qa/qa1629/_index.html দেখুন এই উত্তরটি গত মার্চ, ২014 আপডেট করেছে।

SKStoreProductViewController 6 এবং এর উপরে সমর্থনকারী অ্যাপ্লিকেশনের জন্য, অ্যাপ স্টোরটি উপস্থাপন করার জন্য অ্যাপল একটি ইন-অ্যাপ প্রক্রিয়া সরবরাহ করে: SKStoreProductViewController

- (void)loadProductWithParameters:(NSDictionary *)parameters completionBlock:(void (^)(BOOL result, NSError *error))block;

// Example:
SKStoreProductViewController* spvc = [[SKStoreProductViewController alloc] init];
spvc.delegate = self;
[spvc loadProductWithParameters:@{ SKStoreProductParameterITunesItemIdentifier : @(364709193) } completionBlock:^(BOOL result, NSError *error){ 
    if (error)
        // Show sorry
    else
        // Present spvc
}];

মনে রাখবেন যে iOS6 এ, ত্রুটিগুলি থাকলে সম্পূর্ণকরণ কলটি বলা যাবে না। এটি iOS 7 এ সমাধান করা একটি বাগ বলে মনে হচ্ছে।


যদি আপনার অ্যাপ স্টোর আইডি থাকে তবে আপনি এটি ব্যবহার করে সেরাটি বন্ধ করুন। ভবিষ্যতে বিশেষ করে যদি আপনি আবেদন নাম পরিবর্তন হতে পারে।

http://itunes.apple.com/app/id378458261

যদি আপনার অ্যাপ স্টোর স্টোরটি না থাকে তবে আপনি এই ডকুমেন্টেশনটির উপর ভিত্তি করে একটি url তৈরি করতে পারেন https://developer.apple.com/library/ios/qa/qa1633/_index.html

+ (NSURL *)appStoreURL
{
    static NSURL *appStoreURL;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        appStoreURL = [self appStoreURLFromBundleName:[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleName"]];
    });
    return appStoreURL;
}

+ (NSURL *)appStoreURLFromBundleName:(NSString *)bundleName
{
    NSURL *appStoreURL = [NSURL URLWithString:[NSString stringWithFormat:@"itms-apps://itunes.com/app/%@", [self sanitizeAppStoreResourceSpecifier:bundleName]]];
    return appStoreURL;
}

+ (NSString *)sanitizeAppStoreResourceSpecifier:(NSString *)resourceSpecifier
{
    /*
     https://developer.apple.com/library/ios/qa/qa1633/_index.html
     To create an App Store Short Link, apply the following rules to your company or app name:

     Remove all whitespace
     Convert all characters to lower-case
     Remove all copyright (©), trademark (™) and registered mark (®) symbols
     Replace ampersands ("&") with "and"
     Remove most punctuation (See Listing 2 for the set)
     Replace accented and other "decorated" characters (ü, å, etc.) with their elemental character (u, a, etc.)
     Leave all other characters as-is.
     */
    resourceSpecifier = [resourceSpecifier stringByReplacingOccurrencesOfString:@"&" withString:@"and"];
    resourceSpecifier = [[NSString alloc] initWithData:[resourceSpecifier dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES] encoding:NSASCIIStringEncoding];
    resourceSpecifier = [resourceSpecifier stringByReplacingOccurrencesOfString:@"[!¡\"#$%'()*+,-./:;<=>¿[email protected]\\[\\]\\^_`{|}~\\s\\t\\n]" withString:@"" options:NSRegularExpressionSearch range:NSMakeRange(0, resourceSpecifier.length)];
    resourceSpecifier = [resourceSpecifier lowercaseString];
    return resourceSpecifier;
}

এই পরীক্ষা পাস করে

- (void)testAppStoreURLFromBundleName
{
    STAssertEqualObjects([AGApplicationHelper appStoreURLFromBundleName:@"Nuclear™"].absoluteString, @"itms-apps://itunes.com/app/nuclear", nil);
    STAssertEqualObjects([AGApplicationHelper appStoreURLFromBundleName:@"Magazine+"].absoluteString, @"itms-apps://itunes.com/app/magazine", nil);
    STAssertEqualObjects([AGApplicationHelper appStoreURLFromBundleName:@"Karl & CO"].absoluteString, @"itms-apps://itunes.com/app/karlandco", nil);
    STAssertEqualObjects([AGApplicationHelper appStoreURLFromBundleName:@"[Fluppy fuck]"].absoluteString, @"itms-apps://itunes.com/app/fluppyfuck", nil);
    STAssertEqualObjects([AGApplicationHelper appStoreURLFromBundleName:@"Pollos Hérmanos"].absoluteString, @"itms-apps://itunes.com/app/polloshermanos", nil);
    STAssertEqualObjects([AGApplicationHelper appStoreURLFromBundleName:@"Niños and niñas"].absoluteString, @"itms-apps://itunes.com/app/ninosandninas", nil);
    STAssertEqualObjects([AGApplicationHelper appStoreURLFromBundleName:@"Trond, MobizMag"].absoluteString, @"itms-apps://itunes.com/app/trondmobizmag", nil);
    STAssertEqualObjects([AGApplicationHelper appStoreURLFromBundleName:@"!__SPECIAL-PLIZES__!"].absoluteString, @"itms-apps://itunes.com/app/specialplizes", nil);
}


QA1629 আপনি ব্যবহার করতে হবে

appStoreLink = "https://itunes.apple.com/us/app/apple-store/id375380948?mt=8"  

অথবা

SKStoreProductViewController 

SKStoreProductViewController ক্লাস ব্যবহার করে এটি করতে iOS 6 সঠিক উপায় থেকে শুরু।

সুইফ্ট 3.x :

func openStoreProductWithiTunesItemIdentifier(identifier: String) {
    let storeViewController = SKStoreProductViewController()
    storeViewController.delegate = self

    let parameters = [ SKStoreProductParameterITunesItemIdentifier : identifier]
    storeViewController.loadProduct(withParameters: parameters) { [weak self] (loaded, error) -> Void in
        if loaded {
            // Parent class of self is UIViewContorller
            self?.present(storeViewController, animated: true, completion: nil)
        }
    }
}

func productViewControllerDidFinish(_ viewController: SKStoreProductViewController) {
    viewController.dismiss(animated: true, completion: nil)
}
// Usage:
openStoreProductWithiTunesItemIdentifier(identifier: "13432")

আপনি অ্যাপের আইটিউনস আইটেম আইডেন্টিফায়ারটি এভাবে পেতে পারেন: (স্ট্যাটিক এক পরিবর্তে)

সুইফ্ট 3.2

var appID: String = infoDictionary["CFBundleIdentifier"]
var url = URL(string: "http://itunes.apple.com/lookup?bundleId=\(appID)")
var data = Data(contentsOf: url!)
var lookup = try? JSONSerialization.jsonObject(with: data!, options: []) as? [AnyHashable: Any]
var appITunesItemIdentifier = lookup["results"][0]["trackId"] as? String
openStoreProductViewController(withITunesItemIdentifier: Int(appITunesItemIdentifier!) ?? 0)

সুইফ্ট 2.x :

func openStoreProductWithiTunesItemIdentifier(identifier: String) {
    let storeViewController = SKStoreProductViewController()
    storeViewController.delegate = self

    let parameters = [ SKStoreProductParameterITunesItemIdentifier : identifier]
    storeViewController.loadProductWithParameters(parameters) { [weak self] (loaded, error) -> Void in
        if loaded {
            // Parent class of self is UIViewContorller
            self?.presentViewController(storeViewController, animated: true, completion: nil)
        }
    }
}

func productViewControllerDidFinish(viewController: SKStoreProductViewController) {
    viewController.dismissViewControllerAnimated(true, completion: nil)
}
// Usage
openStoreProductWithiTunesItemIdentifier("2321354")

উদ্দেশ্য-সি :

static NSInteger const kAppITunesItemIdentifier = 324684580;
[self openStoreProductViewControllerWithITunesItemIdentifier:kAppITunesItemIdentifier];

- (void)openStoreProductViewControllerWithITunesItemIdentifier:(NSInteger)iTunesItemIdentifier {
    SKStoreProductViewController *storeViewController = [[SKStoreProductViewController alloc] init];

    storeViewController.delegate = self;

    NSNumber *identifier = [NSNumber numberWithInteger:iTunesItemIdentifier];

    NSDictionary *parameters = @{ SKStoreProductParameterITunesItemIdentifier:identifier };
    UIViewController *viewController = self.window.rootViewController;
    [storeViewController loadProductWithParameters:parameters
                                   completionBlock:^(BOOL result, NSError *error) {
                                       if (result)
                                           [viewController presentViewController:storeViewController
                                                              animated:YES
                                                            completion:nil];
                                       else NSLog(@"SKStoreProductViewController: %@", error);
                                   }];

    [storeViewController release];
}

#pragma mark - SKStoreProductViewControllerDelegate

- (void)productViewControllerDidFinish:(SKStoreProductViewController *)viewController {
    [viewController dismissViewControllerAnimated:YES completion:nil];
}

আপনি kAppITunesItemIdentifier (অ্যাপ্লিকেশনের kAppITunesItemIdentifier আইটেম আইডেন্টিফায়ার) পেতে পারেন kAppITunesItemIdentifier মতো: (স্ট্যাটিকের পরিবর্তে)

NSDictionary* infoDictionary = [[NSBundle mainBundle] infoDictionary];
    NSString* appID = infoDictionary[@"CFBundleIdentifier"];
    NSURL* url = [NSURL URLWithString:[NSString stringWithFormat:@"http://itunes.apple.com/lookup?bundleId=%@", appID]];
    NSData* data = [NSData dataWithContentsOfURL:url];
    NSDictionary* lookup = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
    NSString * appITunesItemIdentifier =  lookup[@"results"][0][@"trackId"]; 
    [self openStoreProductViewControllerWithITunesItemIdentifier:[appITunesItemIdentifier intValue]];




app-store