IIJmioのクーポン残量をライブタイルで表示するアプリ、Mimosaのバージョン2.1.4をリリースしました。Windows 10 / Windows 10 Mobile 向けです。
時々耳にしていたワイドタイルを実装しました。なったといっても横に長くなるだけなので特に情報量増えません。俺が考えた最強のワイドタイルがあるなら教えていただければ。
ワイドタイルについて2点。
です。
Windows Phone 8.1 にはカメラボタンがあったのに10 Mobile になってなくなった!クソだ!!とか、(任意のアプリ名)はWindows 10 Mobile になってカメラから直接画像取り込めなくなったしクソとか言ってる人向け。
画像選択画面を出して、右下の…を押します。
場所の選択を押します。
すると、カメラとか出てきます。
んなもんわかるかよってむかついたひとはフィードバックツールで文句垂れましょう。
Surface Bookの画面を裏向けて合体、電池が減ってくる すると画面を裏向けた状態で分離できなくなります。しかも外にいて充電するすべがない場合充電できる場所まで画面を外に向けた状態で持ち運ばないといけなくなります。さらにその状態だとキーボードとかも使えなくなります。めっちゃ困ります。仮に充電できる場所にたどり着いたとしても上半身のバッテリが2割程度?ないと分離できる状態にならないのでそれなりに充電されるまで画面は裏返ったままです。
裏返して使うときは電源に十分注意しましょう…
Twitter社にお前らの仕事だろどう考えてるんだ。って質問のメールを送っていたところ、アメリカがやっと月曜日になって返事が返ってきました。
リクエストをレビューしました。問題ないのでAPIキーを再度有効にしておきましたよ!
私がききたいのはそうじゃない。しかも質問に対して回答してないし、そもそも私は彼らの要求に対する対策案を提案してない。いったいなんなの。というわけで近々また規制されるかもしれません。
Twitter社から今回の書き込み規制について High Volume RTs が原因であるとし、RTに対するRate Limit を アプリケーションが実装した場合 のみ規制を解除する。と返答がありました。
Twitter APIにはRate Limit という呼び出し回数制限が設けられており、これは基本的に15回/15min です。しかし、ステータスの更新やリツイートなどの一部のAPIについては呼び出し回数の上限が設けられていません。 ここについて、Twitter API側で制限を設けることをせずアプリケーションに対してRate Limitを設けるように彼らは要請しています。
そもそも、Rate Limitをかけるのは本来プラットフォーム側の責務であると私は考えています。それを一方的にアプリケーション側に実装することを求めてくる彼らの姿勢が気に入らない。ということで少し喧嘩しています。
リツイート操作に対してRate Limitを設けるのぐらい大したことではないので、ちょっとだけ喧嘩したら彼らの要求を受け入れるつもりです。喧嘩しているあいだ、Aristeaからツイートなどができない状態が続きユーザの皆様には大変ご迷惑をおかけいたします。申し訳ないです。
日本時間2月19日午前9時ごろよりAristeaがまた書き込み規制されています。(1日ぶり3回目)
皆様には大変ご迷惑をおかけしておりますが、現在Twitter社に問い合わせをしているところです。解決まで今しばらくお待ちくださいませ。
ちなみに、2月19日夜11時現在このブログのURLのツイートすらできません。 なおったみたいです。
Aristeaは現在書き込み規制 という状態ですが、これは具体的に以下のような操作がすべてできません。
逆に次のような操作は可能です。
もし、Aristea以外のクライアントが突然こういう状態になった場合それはおそらくAristeaと同じようにTwitterから一方的に書き込み規制を受けている状態です。開発者サイドもTwitter社とやり取りをしていると思いますので優しく見守ってあげてください…
前回1月中頃だったので約1か月も空いてしまいました。バグとかいっぱいあって早くリリースしないといけないのに遅くなっちゃってごめんなさい。ということで今回の更新内容です。
わりともりだくさん。主にバグ修正。あとレイアウトの修正。それから使いやすくしました。という感じです。複数画像の並び順についてなんですが、いままでのAristeaはこうでした。
1 | 3 |
---|---|
2 | 4 |
で、これって公式クライアントと並び順違って、なおさないとなー。と思っていたのを今回入れました。なので今回からはこう並びます。
1 | 2 |
---|---|
3 | 4 |
次に、ローカル通知が削除されました。ローカル通知自体は、AristeaでPush通知が実装される前にあったものでアプリが実行中でないといけないというものでした。*2で、そのあとPush通知が実装されるのですが機能を特に削除してなかったので似たような機能が複数存在する状態になっていました。そんでもってよく、通知が複数出るんだけど。という話をよくいただいていて、それ通知2個ONにしてるからでしょ。と回答していたのですがやっとまぁ消しました。というだけです。これからはPush通知をご利用ください。
ちなみにWindows 10でPush通知を有効にしていると通知領域からふぁぼったりリツイートしたり、リプライ送れたりします。結構便利なのでおすすめです。さらにちなみに、Windows 10 のトーストの挙動かなり怪しくて、アクションセンターに20個ぐらい通知がたまっているとAristeaのトーストが出なくなります。どう見てもバグなんですけど仕様という話があります。ほんまかいなというところです。
NuAnsの話もいいけどちゃんとでべろっぷめんとの話もたまにはしたいよね。ということで、Windows 8.xのころのトーストでタップされた時の引数を設定するには、
<toast launch="ここが引数"> <visual> <!-- いろいろ --> </visual> </toast>
こんなXMLを書いて、App.xaml.csのOnLaunchedでこうやってあげて、MainPage.xaml.csとかのOnNavigatedToとかでハンドリングすればいいんですが
protected override void OnLaunched(LaunchActivatedEventArgs e) { // e.Arguments にlaunch で指定した文字列が入ってます。 var args = e.Arguments; // Navigateとかで適当に引き渡す ... rootFrame.Navigate(typeof(MainPage), args); }
Windows 10で追加された新しいトーストだとうまく動きません。とりあえずXMLはこんな感じに書いたとします。
<toast launch="好きな文字列"> <visual> <binding template="ToastGeneric"> </binding> </visual> <actions> <!-- 1) foreground --> <action content="yes" arguments="yes" /> <!-- 2) background --> <action content="no" arguments="no" activationType="background" /> <!-- 3) protocol --> <action content="web" arguments="https://example.com/" activationType="protocol" /> </actions> </toast>
このとき、actions の中の3つは、それぞれOnActivated、BackgroundTask、Protocolなのでなにもしない。でハンドリングしますが、 ボタンじゃないところを触った時はどうしたらいいの。というと、activationType="foreground" (何も指定しない場合はforeground)と同じように OnActivatedでハンドリングしないといけなくなりました。
つまるところ古いトーストのOnLaunchedのままにしておくとトーストタップしたときスプラッシュすら出ずにアプリが起動しなくなります。
なので、他にOnActivated使わないようなアプリなのであればApp.xaml.csをこんな感じに書くといいかもしれません。
protected override void OnLaunched(LaunchActivatedEventArgs e) { OnActivated(e); } protected override void OnActivated(IActivatedEventArgs e) { // ** OnLaunched のなかみをコピペしてちょっと修正したもの Frame rootFrame = Window.Current.Content as Frame; if (rootFrame == null) { // Create a Frame to act as the navigation context and navigate to the first page rootFrame = new Frame(); rootFrame.NavigationFailed += OnNavigationFailed; if (e.PreviousExecutionState == ApplicationExecutionState.Terminated) { } Window.Current.Content = rootFrame; } if (rootFrame.Content == null) { // ** 適当にキャストして値を取り出しますよ rootFrame.Navigate(typeof(MainPage), (e as LaunchActivatedEventArgs)?.Arguments ?? (e as ToastNotificationActivatedEventArgs).Argument); } Window.Current.Activate(); }
LaunchActivatedEventArgsはIActivatedEventArgsを実装しているので、こんな感じに書いてあげるとちょっと楽かも。 という感じですが、もしかするとOnLaunchedと、OnActivatedから呼び出すIActivatedEventArgsとArgumentを受け取る関数としたほうがいいかも? たとえばこんなかんじで。
protected override void OnLaunched(LaunchActivatedEventArgs e) { OnLaunchedCore(e, e.Arguments); } protected override void OnActivated(IActivatedEventArgs e) { if(e is ToastNotificationActivatedEventArgs){ OnLaunchedCore(e, ((ToastNotificationActivatedEventArgs)e).Argument); return; } base.OnActivated(); } private void OnLaunchedCore(IActivatedEventArgs e, object parameter) { // ** OnLaunched のなかみをコピペしてちょっと修正したもの Frame rootFrame = Window.Current.Content as Frame; if (rootFrame == null) { // Create a Frame to act as the navigation context and navigate to the first page rootFrame = new Frame(); rootFrame.NavigationFailed += OnNavigationFailed; if (e.PreviousExecutionState == ApplicationExecutionState.Terminated) { } Window.Current.Content = rootFrame; } if (rootFrame.Content == null) { // ** 適当にキャストして値を取り出しますよ rootFrame.Navigate(typeof(MainPage), parameter); } Window.Current.Activate(); }
ちなみに、古いトーストを使っている場合は従来どおりの挙動になります。つまりOnLaunchedで引数を取得します。