从iTunes重新安装应用程序内购买应用程序

时间:2012-01-27 23:25:18

标签: iphone ios ipad

我是iphone app开发新手,现在正在开发应用程序内购买应用程序。

开发一个实施应用内购买的应用程序,试用期为一周时间,用户安装应用程序&使用它直到试用期,然后他重新安装itunes并再使用一个试用期。我的问题是,如果他没有,购买应用程序,所以无法重新安装它。如何控制用户擦除&重新安装不从itunes购买应用程序。

2 个答案:

答案 0 :(得分:1)

您可以将用户的唯一标识符存储在服务器的数据库中,以及第一次打开应用程序时的时间戳。然后,当用户在第一次打开应用程序后,检查服务器以确保他们的一周没有过期。

要获取设备的唯一标识符,可以使用返回字符串的[[UIDevice sharedDevice] uniqueIdentifier]。但是,此方法已被弃用,因此您应该研究唯一标识设备的替代方法(例如,通过散列wifi mac地址)。

唯一的限制是您必须要求用户具有互联网访问权限才能启动应用程序,因此如果用户在每次重新安装后禁用了Internet访问,并且每次启动时都禁用互联网应用程序,你可以做的并不多 - 虽然为了避免为应用程序买单而付出了巨大的努力。

示例服务器代码:

网址:http://example.com/checkValid.php?udid=A1B2C3D4E5F6

$udid = mysql_real_escape_string($_GET['udid']);
$q = mysql_query("SELECT * FROM devices WHERE udid = `$udid`;");
if($r = mysql_fetch_assoc($q)){
   $timeElapsed = time() - $r['firstLaunch'];
   if($timeElapsed > 7*24*60*60){  // one week
       echo "expired";
       die();
   }
}else{
   $q = mysql_query("INSERT INTO devices (`udid`,`firstLaunch`) VALUES ('$udid','".time()."')");
}
echo "success";

然后,在您的应用中,检查回复是否为expired;如果是,请告诉用户他们的审判已经开始。

关于App Store政策的一点注意事项实际上反对 Apple的App Store指南来创建一个“试用”的应用程序,该应用程序在一定时间后过期。

答案 1 :(得分:0)

显然Apple已经开始拒绝使用[[UIDevice sharedDevice] uniqueIdentifier]的应用;在MKStoreKit blog上看到从Karl开始的主题。

有代码可以获取mac地址here。您可以将其用作创建UDID的基础。我已经读过Apple如果它也传输设备的实际mac地址也会拒绝它,所以你必须将它转换为UDID。该帖子建议使用rfc4122规范。