小编Whi*_*ind的帖子

iOS 15 不受信任的开发者问题

我最近更新到了新的 iOS 15,在 Xcode 中构建并运行我的应用程序后,同时使用与 iOS 15 安装之前相同的开发者帐户登录,我收到以下消息:

\n
\n

无法完成操作\xe2\x80\x99。无法启动 com.xyz.xyz.xyz\n因为它的代码签名无效、权限不足或\n它的配置文件尚未受到用户的明确信任。

\n
\n

和错误日志:

\n
\n

无法启动 \xe2\x80\x9cmy-project0name\xe2\x80\x9d 域:IDEDebugSessionErrorDomain\n代码:3 失败原因:操作无法\xe2\x80\x99 完成。无法\n启动 com.xyz.xyz.xyz,因为它具有无效的代码签名,\n用户未明确信任\n足够的权利或其配置文件。用户信息: {\nDVTRadarComponentKey = 855031;\nIDERunOperationFailingWorker = DBGLLDBLauncher;\nRawUnderlyingErrorMessage = "操作无法\\U2019t 完成。无法启动 com.xyz.xyz.xyz,因为它具有无效的\n代码签名、不充分的权利或其权限配置文件尚未\n被用户明确信任。"; }

\n
\n

系统信息

\n
\n

macOS 版本 11.6(内部版本 20G165)Xcode 13.0 (19234)(内部版本 13A233)\n时间戳:2021-09-21T12:36:18+02:00

\n
\n

早些时候(在 iOS14 上),可以通过以下方式解决这个问题:

\n
Settings.app -> General -> Profile -> Select Profile -> Trust\n
Run Code Online (Sandbox Code Playgroud)\n

但现在(在 iOS15 上)我实际上无法在该位置找到它。我该如何解决这个问题?

\n

xcode apple-developer ios15

36
推荐指数
5
解决办法
2万
查看次数

collisionBitMask如何工作?斯威夫特/ SpriteKit

据我所知,物理体的默认值是当它们相互碰撞时相互反弹,直到你将collisionBitMask设置为相等的数字.

但是,我有一个很大的问题,因为碰撞我认为看起来应该非常简单.

    let RedBallCategory  : UInt32 = 0x1 << 1
    let GreenBallCategory: UInt32 = 0x1 << 2
    let RedBarCategory : UInt32 = 0x1 << 3
    let GreenBarCategory : UInt32 = 0x1 << 4
    let WallCategory : UInt32 = 0x1 << 5


      greenBall.physicsBody?.categoryBitMask = GreenBallCategory
       greenBall.physicsBody?.contactTestBitMask = RedBarCategory
        greenBall.physicsBody?.collisionBitMask = GreenHealthCategory

 redBall.physicsBody?.categoryBitMask = RedBallCategory
        redBall.physicsBody?.contactTestBitMask = GreenBarCategory
       redBall.physicsBody?.collisionBitMask = RedHealthCategory

   let borderBody = SKPhysicsBody(edgeLoopFromRect: self.frame)
    self.physicsBody = borderBody
    self.physicsBody?.friction = 0
    borderBody.contactTestBitMask = RedBallCategory | GreenBallCategory
   borderBody.categoryBitMask = WallCategory
Run Code Online (Sandbox Code Playgroud)

所以这里我有2个球和我的边界.我可以得到我想要的碰撞检测,但是当我添加边框体的类别位掩码时,它允许球穿过和离开屏幕,这是我不想要的.

我也希望球能够相互反弹,但只有当我注意到球的类别之一时,他们才能反弹.否则他们会互相通过. …

sprite-kit skphysicsbody swift

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

究竟什么构成了EKCalendar中的"完整日历同步"?

EKCalendar该类的文档为该calendarIdentifier属性声明了这一点:

与日历完全同步将丢失此标识符.您应该有一个计划,通过缓存其他属性来处理标识符不再可读的日历.

什么时候发生"完全同步"以及哪些属性可能会发生变化calendarIdentifier

calendar objective-c ios eventkit

20
推荐指数
2
解决办法
1578
查看次数

使用未声明的类型UNAuthorizationOptions

我正在尝试使用Firebase来处理推送通知.我安装了Firebasepod('Firebase/Core'和'FirebaseMessaging'pods).

在我将Firebase导入项目之后

import Firebase
Run Code Online (Sandbox Code Playgroud)

我已经像这样配置了Firebase应用程序(代码是从官方文档中复制的):

  func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?)
-> Bool {FIRApp.configure() }
Run Code Online (Sandbox Code Playgroud)

之后,我尝试使用此代码(代码从官方文档复制):

if #available(iOS 10.0, *) {
            let authOptions : UNAuthorizationOptions = [.alert, .badge, .sound]
            UNUserNotificationCenter.current().requestAuthorization(
                options: authOptions,
                completionHandler: {_,_ in })

            // For iOS 10 display notification (sent via APNS)
            UNUserNotificationCenter.current().delegate = self
            // For iOS 10 data message (sent via FCM)
            FIRMessaging.messaging().remoteMessageDelegate = self

        } else {
            let settings: UIUserNotificationSettings =
                UIUserNotificationSettings(forTypes: [.Alert, .Badge, .Sound], categories: nil)
            application.registerUserNotificationSettings(settings)
        }

        application.registerForRemoteNotifications()
Run Code Online (Sandbox Code Playgroud)

但是我从标题中得到了错误: …

apple-push-notifications ios firebase swift firebase-cloud-messaging

19
推荐指数
2
解决办法
7707
查看次数

在didReceiveRemoteNotification中播放声音,而在backgorund中,使用文本到语音功能

所以我现在正在尝试的是当应用程序在后台接收远程通知(或者可能从暂停状态唤醒)时播放消息.

应用程序从暂停模式唤醒后,声音根本无法播放.

当应用程序在前台时,在didReceiveRemoteNotification:调用方法后立即播放声音.

didReceiveRemoteNotification:当应用程序从挂起模式唤醒时调用方法时,立即播放声音的适当方法是什么?

这是一些代码(语音管理器类):

-(void)textToSpeechWithMessage:(NSString*)message andLanguageCode:(NSString*)languageCode{

AVAudioSession *audioSession = [AVAudioSession sharedInstance];
NSError *error = nil;
DLog(@"Activating audio session");
if (![audioSession setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker | AVAudioSessionCategoryOptionMixWithOthers error:&error]) {
    DLog(@"Unable to set audio session category: %@", error);
}
BOOL result = [audioSession setActive:YES error:&error];
if (!result) {
    DLog(@"Error activating audio session: %@", error);

}else{
    AVSpeechUtterance *utterance = [AVSpeechUtterance speechUtteranceWithString:message];

    [utterance setRate:0.5f];

    [utterance setVolume:0.8f];

    utterance.voice = [AVSpeechSynthesisVoice voiceWithLanguage:languageCode];

    [self.synthesizer speakUtterance:utterance];
}
Run Code Online (Sandbox Code Playgroud)

}

-(void)textToSpeechWithMessage:(NSString*)message{

[self textToSpeechWithMessage:message andLanguageCode:[[NSLocale preferredLanguages] objectAtIndex:0]];

}
Run Code Online (Sandbox Code Playgroud)

后来在 …

objective-c ios avspeechsynthesizer background-mode avspeechutterance

16
推荐指数
1
解决办法
1161
查看次数

没有指定的SKShapeNode初始化(circleOfRadius:radius)

我正在尝试在swift中创建一个SKShapeNode的子类作为SKShapeNode(circleOfRadius:radius),但是没有指定的init.

任何人有任何变通办法或有关原因的信息?我不确定这是一个bug还是故意的.我发现这个视频演示了SKSpriteNode的解决方法,但它不适用于我. https://skillsmatter.com/skillscasts/5695-how-to-subclass-a-skspritenode

总的来说,我正在尝试为SKShapeNode创建一个子类,然后我可以再次从子类中使用不同的版本来更轻松地管理我的代码.TIA

谢谢马丁我之前发现了这个例子.它可以工作,但我怎么会把它变成一个圆而不是一个矩形?

import Foundation
import SpriteKit


    class Player : SKShapeNode {

        override init() {
            super.init()
            self.name = "Player"
            self.fillColor = UIColor.blackColor()

        }

        init(rectOfSize: CGSize) {
            super.init()

            var rect = CGRect(origin: CGPointZero, size: rectOfSize)
            self.path = CGPathCreateWithRect(rect, nil)
        }

        required init?(coder aDecoder: NSCoder) {
            fatalError("init(coder:) has not been implemented")
        }
    }
Run Code Online (Sandbox Code Playgroud)

在主要代码中

let playerOne = Player(rectOfSize: CGSize(width: 100, height: 100))
Run Code Online (Sandbox Code Playgroud)

subclass init sprite-kit skshapenode swift

15
推荐指数
1
解决办法
3924
查看次数

无法在iOS9中暂停SKEmitterNode

我尝试了一些解决方法,但仍然无法暂停现有的粒子iOS9.我正在使用以下技术来暂停场景:

  • 暂停场景 self.paused = YES;
  • 设置自定义globalPause = YES;变量来控制update:方法执行(因为update:在场景暂停时仍然运行).

关键是我不会暂停视图,而是暂停视野.因为这个原因,我不会暂停视图.

以下是可以重现此问题的代码iOS9:

#import "GameScene.h"

@interface GameScene ()

@property (nonatomic, strong)SKEmitterNode *emitter;

@end

@implementation GameScene


-(void)didMoveToView:(SKView *)view {


    [self addChild:[self getSpaceDustEmitter]];

}

//No need for this method though :)

-(SKEmitterNode*)getSpaceDustEmitter{

    self.emitter =  [NSKeyedUnarchiver unarchiveObjectWithFile:[[NSBundle mainBundle] pathForResource:@"spacedust" ofType:@"sks"]];
     self.emitter .name = @"emitter_spacedust";
    self.emitter .position = CGPointMake(CGRectGetMidX(self.frame),self.frame.size.height);



    return  self.emitter ;
}


@end
Run Code Online (Sandbox Code Playgroud)

因此,非常简单的例子可以工作,iOS8而不是按预期工作iOS9.会发生什么事情,即使一切看起来都是暂停的,也不是.如果场景未暂停,则取消暂停后的现有粒子移动到它们应该的位置.此外,看起来粒子也会继续产卵,如果暂停时间过长,这会导致明显滞后...

这是粒子编辑器的截图:

粒子编辑器

有人有一些合理的解释吗?到目前为止,我已经尝试明确暂停发射器:

emitterNode.paused = YES;
Run Code Online (Sandbox Code Playgroud)

它没有用,实际上这应该在场景暂停时自动完成(发射器被添加到场景中).这是尝试的另一件事是设置 …

objective-c particles sprite-kit skemitternode ios9

15
推荐指数
1
解决办法
603
查看次数

SpriteKit的相机抖动效果

有没有人知道一些开箱即用的库可能会提供相机抖动等效果SKNode

如果没有,是否有一种简单的方法来实现使用动作的相机抖动?

谢谢

ios7 sprite-kit

14
推荐指数
4
解决办法
4859
查看次数

无法理解碰撞位掩码的工作原理

我试图在Swift中使用碰撞位掩码和接触测试位掩码,我希望两个对象不要碰撞在一起,所以我在做:

firstNode.physicsBody?.collisionBitMask = 0b01
secondNode?.collisionBitMask = 0b10
Run Code Online (Sandbox Code Playgroud)

由于SpriteKit不上这两个数字与操作,应该没有结果是00因为10 & 01 = 00

那么为什么碰撞会发生呢?

谢谢.

sprite-kit skphysicsbody swift

13
推荐指数
2
解决办法
2096
查看次数

接到两个电话后,SKAction playSoundFileNamed不起作用

我试图弄清楚为什么playSoundFileNamed在接到两个连续的电话后无效.实际上它只在收到第一个电话后才有效.再现步骤是:

  1. 开始游戏
  2. 等待电话并转到后台
  3. 电话已完成(被来电者拒绝或中断)
  4. 回到前台

在此之后,播放来自touchesBegan的声音仍然有效.

当我重复上面的步骤(跳过第一步)时,touchesBegan的机制停止工作.不确定为什么会发生这种情况......以下是可以产生描述行为的代码:

@interface GameScene()

@property (nonatomic, strong) SKAction *sound;
@end

@implementation GameScene

-(void)didMoveToView:(SKView *)view {
    self.sound = [SKAction playSoundFileNamed:@"sound1.wav" waitForCompletion:NO];
}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    /* Called when a touch begins */
    [self runAction:self.sound];
}
@end
Run Code Online (Sandbox Code Playgroud)

我知道在SO上有一些与此相关的问题,但是给出的答案与解决方法有关.我对解决方法不感兴趣,但为什么会发生这种情况呢?它与AVAudioSession有什么关系吗?(可能不是)我知道我可以使用AVAudioPlayer作为一种解决方法,但仍然不确定播放大量简单短音的效果是多少......

audio objective-c ios sprite-kit skaction

11
推荐指数
1
解决办法
437
查看次数