Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何分配skpayment applicationusername_Ios_Objective C_In App Purchase_Skpaymenttransaction - Fatal编程技术网

Ios 如何分配skpayment applicationusername

Ios 如何分配skpayment applicationusername,ios,objective-c,in-app-purchase,skpaymenttransaction,Ios,Objective C,In App Purchase,Skpaymenttransaction,我们可以指定skpayment applicationusername吗 当应用内购买完成时,我在SKPayment中得到一个空的applicationUsername 如何将值分配给SKPaymentapplicationUsername?您不能将值分配给SKPayment的属性;当您创建SKMutablePayment实例以提交购买请求时,您的应用程序可以提供一个表示应用程序用户id的不透明值。这使iTunes商店能够检测到不规则活动 尽管名称不同,applicationUsername属性

我们可以指定skpayment applicationusername吗

当应用内购买完成时,我在SKPayment中得到一个空的
applicationUsername


如何将值分配给
SKPayment
applicationUsername

您不能将值分配给
SKPayment
的属性;当您创建
SKMutablePayment
实例以提交购买请求时,您的应用程序可以提供一个表示应用程序用户id的不透明值。这使iTunes商店能够检测到不规则活动

尽管名称不同,
applicationUsername
属性并不用于保存实际用户名

建议的方法如图所示

请注意,您在交易队列中收到的
SKPayment
中分配的值

重要

applicationUsername属性不保证在将支付事务添加到队列和队列更新事务之间保持不变。除提供欺诈检测外,请勿尝试将此财产用于其他目的


您不能指定只读属性。iOS在完成事务时提供的对象是不可变的。老实说,苹果的API未能正确地将处理后的交易通知客户端应用程序

您可以像这样分配它:

   // MARK: purchase SKProduct from store
    @objc func buy(product: SKProduct, withHandler handler: @escaping ((_ success : Bool , _ error :RiscoIAPManagerError? ) -> Void)) {
        let payment = SKMutablePayment(product: product)
        
        payment.applicationUsername = "applicationUsername"
        SKPaymentQueue.default().add(payment)
        // Keep the completion handler.
        productBuyComplition = handler
    }
并且可以把它重新放进去

     func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
                    print(transaction.payment.applicationUsername as Any)

}

该问题似乎是指已完成的购买。当他在paymentQueue:updatedTransactions:method中收到SKPaymentTransaction时。返回的对象是不可变的。是的,我知道。我没说要对返回的对象进行变异。我说你需要在提交购买时指定一个值。我不确定这个问题问得是否正确,或者我对英语的理解不好,但是当有人说“应用内购买完成时”我假设您已收到包含在paymentQueue:updatedTransactions:observer方法中的SKPaymentTransaction的SKPaymentTransaction。一个不可变的对象。对,问题是如何分配一个值,使该属性在已完成的事务中不是
nil
;答案是,您必须在将付款请求作为SKMutablePayment提交给Apple之前指定一个值。@property(非原子、复制、读写)NSString*applicationUsername NS\u AVAILABLE\u IOS(7\u 0);我想从iOS 7开始,我们可以给applicationUsername赋值,我从SKPayment.hWe是指SKPayment,对吗?Readwrite属性是SKMutablePayment.h的一部分,在第44行可以找到SKPayment.h文件的副本。applicationUsername属性的重新声明是从第42行开始的SKMutablePayment的一部分。(裁判:)对不起,你是对的,哦,是的,对不起,我知道了。我在下面的问题中有问题,你能引导我吗?从Apple server获取空白响应订阅状态URL IAP、状态更新通知、状态更新通知