小编Bbx*_*Bbx的帖子

我应该为CFBundleVersion和CFBundleShortVersionString使用什么值?

这是我的第一个iOS应用提交,我不希望我的应用被拒绝.

这来自Apple Docs:

CFBundleVersion(String - iOS,OS X)指定捆绑包的构建版本号,该版本号标识捆绑包的迭代(已发布或未发布).构建版本号应该是由三个非负的,周期分隔的整数组成的字符串,第一个整数大于零.该字符串应仅包含数字(0-9)和句点(.)字符.前导零从每个整数中截断,将被忽略(即1.02.3相当于1.2.3).此密钥不可本地化.

CFBundleShortVersionString(String - iOS,OS X)指定捆绑包的发行版本号,该版本号标识应用程序的已发布迭代.发行版本号是由三个以句点分隔的整数组成的字符串.第一个整数表示对应用程序的主要修订,例如实现新功能或主要更改的修订.第二个整数表示实现不太突出的功能的修订.第三个整数表示维护版本.

此键的值与"CFBundleVersion"的值不同,后者标识应用程序的迭代(已发布或未发布).可以通过将其包含在InfoPlist.strings文件中来本地化此密钥.

但似乎有点奇怪.我对此的解释是将两个值相同,即:

CFBundleVersion: 1.0.0
CFBundleShortVersionString: 1.0.0
Run Code Online (Sandbox Code Playgroud)

有人可以确认100%这是我应该放的吗?

ios

88
推荐指数
7
解决办法
5万
查看次数

iOS UIAlertController粗体按钮在8.3中更改

UIAlertController有两个按钮,样式设置为:

UIAlertActionStyle.Cancel
UIAlertActionStyle.Default
Run Code Online (Sandbox Code Playgroud)

在iOS 8.2中,"取消"按钮为非粗体,"默认"为粗体.在iOS 8.3中,它们已经转换

您可以看到Apple自己的应用程序,例如,设置>邮件>添加帐户> iCloud>输入无效数据,然后在8.3上显示如下:

不支持的Apple ID

了解更多(粗体)确定(非粗体)

而8.2则是另一种方式.

任何解决方法,使它再次像8.2.为什么会改变?

button ios uialertcontroller

53
推荐指数
3
解决办法
1万
查看次数

AdMob 需要哪些 SKAdNetworkIdentifier

我在 iOS 游戏中使用 AdMob,最近更新了它,将 AdMob SKAdNetworkIdentifier 包含在我的 Info.plist 文件中(因为我的 AdMob 帐户中出现了这样做的警告)。谷歌的标识符是:

cstr6suwn9.skadnetwork
Run Code Online (Sandbox Code Playgroud)

这一切似乎工作正常,我的 AbMob 帐户页面上的警告消失了。

但几周后,我收到另一个警告,当我检查此页面时:

https://developers.google.com/admob/ios/ios14

它说“选择其他买家”部分中还有 32 个 SKAdNetworkIdentier,AdMob 建议我们也必须将其包括在内。

我还没有更新我的游戏,而且警告已经消失了,所以我不知道是否要添加所有这些额外的标识符。看起来这个列表是定期添加的(最后一次更新是 4 月 9 日),所以如果这是 Google 的计划,那么必须不断更新我的应用程序似乎很痛苦。

我不使用“调解”。那么我需要所有这些第三方的还是只需要 Google 的?

admob skadnetwork

8
推荐指数
1
解决办法
4637
查看次数

c#简单背景线程

我正在寻找一种在后台执行任务的简单方法,然后在完成时更新某些内容(在主线程上).它处于低级"模型"类中,因此我无法调用InvokeOnMainThread,因为我没有NSObject.我有这个方法:

public void GetItemsAsync(Action<Item[]> handleResult)
{
  Item[] items=null;
  Task task=Task.Factory.StartNew(() =>
  {
    items=this.CreateItems(); // May take a second or two
  });
  task.ContinueWith(delegate
  {
    handleResult(items);
  }, TaskScheduler.FromCurrentSynchronizationContext());
}
Run Code Online (Sandbox Code Playgroud)

这似乎工作正常,但是

1)这是最好的(最简单的)方式吗?

2)我担心局部变量:

Item{} items=null
Run Code Online (Sandbox Code Playgroud)

当方法在后台线程完成之前返回时,什么停止消失?

谢谢.

c# multithreading background task

7
推荐指数
1
解决办法
1449
查看次数

使用CATransformLayer警告:在仅变换图层中更改属性不透明将不起作用

我创建了一个" TransformView"子类UIView,以支持我在翻转动画中使用的双面视图.这已在其他帖子中提出,例如:

如何在透视视图中围绕其中心旋转平面对象?

@interface TransformView : UIView
@end

@implementation TransformView
+ (Class)layerClass {
  return [CATransformLayer class];
}
@end
Run Code Online (Sandbox Code Playgroud)

一切正常,但每次使用以下命令创建TransformView对象时都会收到警告:

TransformView *newTransformView=[[TransformView alloc] initWithFrame:frame];
Run Code Online (Sandbox Code Playgroud)

警告说:

- 在仅变换图层中更改属性不透明将不起作用

我想这个UIView类正在初始化不透明属性,这通常适用于CALayer但不是a CATransformLayer.

子类代码是不是很狡猾?如果是这样,你怎么能为翻转动画创建一个双面视图?

有关如何停止警告的任何想法?

我怀疑TransformView从一个nib文件创建而不是initWithFrame避免警告,但似乎很麻烦,为了避免警告必须这样做.

animation subclass uiview ios catransformlayer

6
推荐指数
1
解决办法
5339
查看次数

layoutSubviews在旋转时调用两次

当我的主视图旋转时,我想重新排列子视图,所以在我的ViewController中,我重写

willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)orientation duration:(NSTimeInterval)duration
Run Code Online (Sandbox Code Playgroud)

并在那里设置子视图的帧.这一切都很好,但在子视图中我也被覆盖了

 layoutSubviews
Run Code Online (Sandbox Code Playgroud)

所以他们正确地布置自己.但问题是这个现在被调用两次 - 大概一次我在willAnimateRotationToInterfaceOrientation中设置Frame而一次因为旋转而设置.(如果我没有设置Frame,它会被调用一次.)

当然,ViewController负责布局框架,这看起来像是一个设计缺陷 - 什么是解决方案,所以layoutSubviews只调用一次?

rotation viewcontroller ios layoutsubviews

6
推荐指数
1
解决办法
4587
查看次数

iOS UIPageControl Horizo​​ntalAlignment不起作用

我已经尝试将UIPageControl框架设置为我的屏幕的整个宽度,并将Interface Builder中的对齐设置为Horizo​​ntal:right但它仍然保持居中.

"contentVerticalAlignment"是一个UIControl属性,并没有提到它是否适用于文档中的UIPageControl.水平对齐应该适用于UIPageControl吗?如果不是,我将其子类化以使其工作(通过将其嵌入UIView并自己对齐).

alignment uipagecontrol ios

6
推荐指数
1
解决办法
1070
查看次数

如何可靠地检测到UIViewController已被关闭

当关闭ViewController时,我需要做一些事情,即:

  • 当按下“返回”时
  • 当父项调用popToRootViewController时(如果在UINavigationController中)
  • 当父级调用了DismissViewController时(如果显示)

例如,我需要退订事件,或者放弃呈现的警报等。

当popToRootViewController的父级调用popToRootViewController时,不会调用ViewWillDisappear,因此不起作用。

WillMoveToParentViewController仅适用于View Controller包含

Dealloc不好,因为只有在收集垃圾时才这样做。我无论如何都在使用C#Xamarin,它在那儿行不通。

ViewDidUnload不再使用,并且从此不再使用

ViewController本身不应该关心它的显示方式,因此我们如何确定何时将其关闭?

这似乎是一个重要的基本要求。例如,如何在没有此情况的情况下取消订阅模型中的事件?

这是一个类似的问题,但没有好的答案:

您可以检测到何时关闭或弹出UIViewController吗?

uiviewcontroller dismiss ios xamarin

5
推荐指数
1
解决办法
4310
查看次数

来自 AdMob 的 SKAdNetwork 警告以及 iOS 应用何时需要应用跟踪透明度警报

我刚刚开始在 AdMob 中收到关于我的带有广告的 iOS 游戏的警告消息:

\n
"Some apps haven\xe2\x80\x99t been configured to use SKAdNetwork"\n
Run Code Online (Sandbox Code Playgroud)\n

而且我可能不会获得一些广告积分。按照这个看起来很容易修复:

\n

https://developers.google.com/admob/ios/ios14

\n

我只是向 Info.plist 添加一个键

\n

但在该链接上,它还提到了应用程序跟踪透明度授权,我\xe2\x80\x99m 不确定该怎么办。我知道 ATT 是什么 - 它会发出警报,请求许可跟踪并影响对 IDFA 的访问。但 \xe2\x80\x99s 有点奇怪,Google 说 \xe2\x80\x9c 如果你决定包含 ATT\xe2\x80\x9d。它\xe2\x80\x99s就像Google并不\xe2\x80\x99真正希望你这样做。

\n

另外,据我所知,即使在 iOS 14.4 中,在不添加 ATT 警报的情况下仍然可以访问 IDFA。那么一些问题:

\n
    \n
  1. 有谁知道苹果何时(或是否)会强制要求 ATT 警报?他们过去常说 2021 年初 - 有更确定的日期或具体版本号吗?它似乎还没有被强制执行(我的游戏更新没有它本周已获得批准),并且 IDFA 似乎在 iOS 14.4 上完全可以访问,没有警报。我可以用以下命令打印出来:

    \n
    Console.WriteLine("AdvertisingIdentifier={0}", AdSupport.ASIdentifierManager.SharedManager.AdvertisingIdentifier);\n
    Run Code Online (Sandbox Code Playgroud)\n

    并且它\xe2\x80\x99 并不全为零。

    \n
  2. \n
  3. 当 IDFA 仍然可以访问时,如果没有 SKAdNetwork 密钥,我真的会损失广告收入吗?

    \n
  4. \n
  5. SKAdNetwork 是未来吗?IDFA 是否会被逐步淘汰?那么未来AdMob将根本不再使用IDFA?

    \n
  6. \n
  7. 我应该继续实施 …

admob ios idfa skadnetwork

5
推荐指数
1
解决办法
1472
查看次数

iOS 上的 AdMob - 没有广告可展示

过去 6 个月,我在一款新的 iOS 游戏上使用 AdMob 测试广告,效果很好。现在我想发布它,我切换到使用我在 Admob 中设置的实时 AdUnitIds,但它在所有 iOS 设备上失败并出现以下错误:

\n
\n

请求错误:1 没有广告可展示。

\n
\n

发生在这里:

\n
public override void DidFailToReceiveAd(Interstitial sender, RequestError error)\n{\n    System.Diagnostics.Debug.WriteLine(\xe2\x80\x9cDidFailToReceiveAd  error={0}", error);\n}\n
Run Code Online (Sandbox Code Playgroud)\n

我正在使用横​​幅广告和插页式广告,但两者都出现相同的错误。

\n

我还有另外两款 AdMob 游戏运行良好。

\n

一些观察和想法:

\n
    \n
  1. 有趣的是,如果我将新游戏的 BundleID 更改为其他游戏之一,则实时广告可以正常工作(即使用完全相同的代码和新的 AdUnitID),因此我的代码或 AdUnitID 不会有问题。由于某种原因,它不像我的游戏 BundleID\xe2\x80\x99。

    \n
  2. \n
  3. 是因为新游戏尚未在 App Store 上线(it\xe2\x80\x99s 待开发者发布)吗?我不这么认为,因为实时广告在发布之前确实有效。

    \n
  4. \n
  5. 我的新应用程序不是 \xe2\x80\x9clinked\xe2\x80\x9d 到 AdMob(您可以 \xe2\x80\x99t 链接它,直到它 \xe2\x80\x99s Live),那么它与此相关吗?我再次不这么认为,因为链接并没有产生任何区别(与我过去两年的另外两款游戏相比)

    \n
  6. \n
  7. 我可以在我的 AdMob 帐户中看到有数百个“请求”,但没有“展示次数”(除了我将 BundleID 更改为我上面提到的其他游戏时得到的少数)。

    \n
  8. \n
\n

所以我一直在等待这款新游戏的发布。也许发布它就会开始广告工作?但如果没有,我的游戏将会在排行榜上飙升,而我\xe2\x80\x99却得不到任何收入!

\n

其他人是否也遇到过同样的问题,然后可能在 7 天或 30 …

admob ios

4
推荐指数
1
解决办法
2865
查看次数