小编Dan*_*llo的帖子

Apple推送通知无法使用ad-hoc构建

在开发模式下,我可以向设备发送推送通知,而我无法投入生产,我的设置是:

  • .pem文件,它是配置门户的aps_production.cer和我的临时证书的私钥的组合
  • apple server apn:'gateway.push.apple.com',带2196端口
  • 我有一个rails设备,可以从设备中保存令牌,然后通过那些设备令牌和之前的.file发送通知给apple打开连接
  • ad-hoc构建应用程序(它的rubymotion):权利['aps-environment'] ='生产'权利['get-task-allow'] = false
  • 应用程序启动时,将令牌正确发送到我的应用程序服务器
  • 我刚刚检查过令牌与开发模式不同

问题是我的rails应用程序发送通知并且没有收到任何错误,但没有任何设备到达.

我正在使用testflight来分发我的应用程序的ad-hoc版本,但我不知道使用te​​stlight和APNS有任何问题.

什么可以?


编辑我解决了:端口错了,2195而不是2196 ......

adhoc apple-push-notifications ios testflight

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

活动转换:执行停止未恢复的活动

我正在尝试仅在棒棒糖上使用新的API进行活动转换(我使用的是紧凑版本),所以我在活动A中实现了从活动A到活动B的动画:

getWindow().setReenterTransition(null);
getWindow().setExitTransition(null);
getWindow().setAllowEnterTransitionOverlap(false);
getWindow().setAllowReturnTransitionOverlap(false);
Run Code Online (Sandbox Code Playgroud)

因为我对进入或退出此活动不感兴趣,所以我想看到的唯一动画是在活动B的共享视图中.

对于启动活动B:

ActivityCompat.startActivity(this, intent, ActivityOptionsCompat.makeSceneTransitionAnimation(this, fabButton, getString(R.string.transition_fab)).toBundle());
Run Code Online (Sandbox Code Playgroud)

并设置活动B:

getWindow().setEnterTransition(new EmptyTransition());
getWindow().setReturnTransition(null);
getWindow().setAllowEnterTransitionOverlap(false);
getWindow().setAllowReturnTransitionOverlap(false);
getWindow().getEnterTransition().addListener(listener).
Run Code Online (Sandbox Code Playgroud)

同样,我对返回转换的输入转换不感兴趣,因为内容被隐藏,直到调用了输入转换监听器方法'onTransitionEnd',因此我的转换全部基于从活动A移动/增长到活动B的共享元素当这个过渡完成后,我将把内容带入.

一切正常,但不是非常强大的设备(所以所有非Nexus)不时活动A默默崩溃:

java.lang.RuntimeException: Performing stop of activity that is not resumed: {com.transferwise.android.debug/com.transferwise.android.activity.LoggedInMainActivity}
Run Code Online (Sandbox Code Playgroud)

然后发生共享元素的转换,但是不调用侦听器(不是事件TransitionStart),因此内容不会进入.该应用程序没有崩溃,用户仍然可以按下并"再试一次",但它不是一个非常好的用户体验.

很难对它进行测试,因为它每10/20次发生一次,并且仅在某些特定设备上发生(它在Sony Xperia Z3紧凑型上发生的更多).

也:

Danieles-MacBook-Pro-2:~ danielebottillo$ adb shell dumpsys activity p | grep com.package.main.debug
  *APP* UID 10349 ProcessRecord{3b27508d 18371:com.package.main.debug/u0a349}
    dir=/data/app/com.package.main.debug-1/base.apk publicDir=/data/app/com.package.main.debug-1/base.apk data=/data/data/com.package.main.debug
    packageList={com.package.main.debug}
      - ActivityRecord{2f07bdf8 u0 com.package.main.debug/com.package.main.activity.ActivityA t1196}
      - ActivityRecord{1e871eb3 u0 com.package.main.debug/com.package.main.activity.ActivityB t1196}
      - 28ea3e28/com.android.providers.settings/.SettingsProvider->18371:com.package.main.debug/u0a349 s1/1 u0/0 +27m9s645ms
      - ReceiverList{40f2178 18371 com.package.main.debug/10349/u0 remote:39e102db}
      - ReceiverList{2e7456a6 18371 com.package.main.debug/10349/u0 remote:dde3801} …
Run Code Online (Sandbox Code Playgroud)

animation android android-lifecycle android-activity android-5.0-lollipop

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

Schedulers.immediate()不使用命令行gradle测试

我正在尝试测试使用RxJava从交互器检索数据的演示者.在设置方法中,我正在执行以下操作:

@Before 
public void setup() {
    RxAndroidPlugins.getInstance().registerSchedulersHook(new RxAndroidSchedulersHook() {
        @Override
        public Scheduler getMainThreadScheduler() {
            return Schedulers.immediate();
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

所以在我的测试方法中,我可以测试演示者调用:

@Test
public void testLoad() {
    presenter.load();
    verify(view).dataLoaded(data);
    verify(interactor).load();
}
Run Code Online (Sandbox Code Playgroud)

如果我使用Android Studio运行测试,一切都按预期工作,问题是如果我尝试命令行

gradle test
Run Code Online (Sandbox Code Playgroud)

然后测试失败,因为: Actually, there were zero interactions with this mock.

所以我试图在调用演示者之后立即放置一个Thread.sleep(2000),然后它就可以工作了,所以我猜测Schedulers.immediate(); 不是从命令行工作,但我不知道为什么以及如何调试/修复.你有什么主意吗?

编辑:演示者实现 - >

public void load() {
    Observable<List<Data>> obs = interactor.load()
            .observeOn(AndroidSchedulers.mainThread())
            .subscribeOn(Schedulers.io());
    obs.subscribe(new Observer<List<Data>>() {
        @Override
        public void onCompleted() {

        }

        @Override
        public void onError(Throwable e) {

        }

        @Override
        public void onNext(List<Data> data) {
            view.dataLoaded(data); …
Run Code Online (Sandbox Code Playgroud)

android unit-testing rx-java

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

testflight应用程序在启动时关闭

我正在尝试通过testflight安装ad-hoc应用程序,所以我从Apple门户创建了一个临时配置,我构建.ipa然后我将它提交给testflight.

问题是我可以从testflight安装应用程序(我没有收到任何错误),但是当它启动应用程序时,它关闭时没有任何警报或消息.

经过一些测试,我已经将设备连接到xcode,然后我点击了"配置开发"(或类似的东西,我不记得正确,因为我再也看不到那个选项).之后,应用程序在启动时没有关闭,效果很好.

问题是,如果我必须为任何设备启用xcode开发,我无法通过testflight分发应用程序!

为什么我有这种行为?我做错了什么?

谢谢

xcode adhoc apple-push-notifications ios testflight

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