我想知道是否有可能在初次下降之后强制推出"XXXXX想要在应用程序内发送推送通知"弹出窗口.用例如下:
用户安装应用程序,获取有关推送通知的警报,并拒绝,因为他们还不知道/不信任该应用程序.
他们使用该应用程序并在应用程序内主动请求在发生事件时收到警报(例如,他们想要购买的东西已售罄,因此他们希望在库存恢复时收到警报).
因此,现在用户已要求应用程序通知他们特定的内容,但在操作系统级别禁用了推送通知.
因此,如果用户请求提醒,但我检测到他们在首次运行时拒绝提醒,我需要通知他们并让他们打开推送通知以使提醒工作.
理想情况下,我想强制"XXXX想发送推送通知警报"此时(自安装应用程序以来第二次).
我想计划b将向他们展示我自己的消息,告诉他们他们必须进入他们的系统设置并手动将其重新打开以接收他们想要的警报.这远非理想.
任何帮助,将不胜感激.谢谢.
在官方文档中,您可以找到以下信息:
每个推送通知包括有效载荷.有效负载包含有关系统应如何提醒用户以及您提供的任何自定义数据的信息.通知有效负载允许的最大大小为256字节 ; Apple推送通知服务拒绝任何超出此限制的通知.
但是在WWDC 14中我们可以看到这个截图:

我想知道苹果公司是否有关于推送通知大小限制的正式声明.我测试了它,并且更大的256字节工作,但文档说它不应该.有人可以确认或否认远程通知的大小吗?
我正在为来自美国以外的美国客户开发使用Apple Pay的应用程序.我正在使用Braintree + Apple Pay.我们支持真实的信用卡到Passbook,但我们无法验证它们.
我成功生成了一个客户端令牌,self.braintree并尝试了BT的两种集成方式.
BTPaymentProvider - 我们对付款方式创建的抽象.
if(self.braintree && ![self.braintree isKindOfClass:[NSNull class]])
{
self.provider = [braintree paymentProviderWithDelegate:self];
if ([self.provider canCreatePaymentMethodWithProviderType:BTPaymentProviderTypeApplePay])
{
self.provider.paymentSummaryItems = @[[PKPaymentSummaryItem summaryItemWithLabel:@"XXXX" amount:[NSDecimalNumber decimalNumberWithString:@"1"]]];
}
[self.provider createPaymentMethod:BTPaymentProviderTypeApplePay];
}
Run Code Online (Sandbox Code Playgroud)
但它没有推动" PKPaymentAuthorizationViewController".跟踪它也不例外.
PassKit - Apple的ApplePay API.
if([PKPaymentAuthorizationViewController canMakePayments]) // It returns TRUE
{
PKPaymentRequest *paymentRequest = [[PKPaymentRequest alloc] init];
paymentRequest.countryCode = @"US";
paymentRequest.currencyCode = @"USD";
paymentRequest.merchantCapabilities = PKMerchantCapabilityEMV | PKMerchantCapability3DS;
paymentRequest.merchantIdentifier = MERCHANTID;
paymentRequest.supportedNetworks = @[PKPaymentNetworkAmex, PKPaymentNetworkMasterCard, PKPaymentNetworkVisa];
paymentRequest.paymentSummaryItems = @[ [PKPaymentSummaryItem summaryItemWithLabel:@"TEST" amount:[NSDecimalNumber …Run Code Online (Sandbox Code Playgroud)我正在尝试从ABRecordRefApple提供的地址中提取送货地址.我有以下但我的街道总是返回nil:
ABMultiValueRef addresses = ABRecordCopyValue(abRecordRef, kABPersonAddressProperty);
for (CFIndex index = 0; index < ABMultiValueGetCount(addresses); index++)
{
CFDictionaryRef properties = ABMultiValueCopyValueAtIndex(addresses, index);
NSString *street = [(__bridge NSString *)(CFDictionaryGetValue(properties, kABPersonAddressStreetKey)) copy];
NSLog(@"street: %@", street);
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
即使使用以下调试:
- (void)paymentAuthorizationViewController:(PKPaymentAuthorizationViewController *)controller
didSelectShippingAddress:(ABRecordRef)customShippingAddress
completion:(void (^)(PKPaymentAuthorizationStatus status, NSArray *methods, NSArray *items))completion
{
NSLog(@"%@", ABRecordCopyValue(customShippingAddress, kABPersonAddressProperty);
completion(PKPaymentAuthorizationStatusSuccess, ..., ...);
}
Run Code Online (Sandbox Code Playgroud)
我得到这个没有街道:
ABMultiValueRef 0x17227fbc0 with 1 value(s)
0: Shipping (0x17227fa00) - {
City = "Marina del Rey";
Country = "United States";
State = …Run Code Online (Sandbox Code Playgroud)