質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.75%

  • C#

    6542questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Unity

    3569questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • Unity2D

    756questions

【UnityAsset】SocialWorkerのAndroidでのtwitter投稿の仕方が分かりません。

受付中

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 491

Kw6ZG2sV

score 55

以下のサイトを参考にTwitter投稿ボタンから
【UnityAsset】SocialWorker – Twitter、Facebook、Line、Instagram、メールへの個別連携
Twitterに画像付きで投稿機能を付けようとしていますができません。

iosの方は出来たのですが、
androidは説明通りにしても出来ませんでした。
もしかしたら私のやり方が間違っていたのかもしれません。

iosの方で成功したコードは以下です。
こちらはtweetボタンを押したら、スクショを撮影して、
textにテキスト、url、ハッシュタグを結合したもの、
imgPathにはスクショのファイルパスを指定しています。

//----------------------------------------------
// SocialWorker
// © 2015 yedo-factory
//----------------------------------------------
using UnityEngine;
using UnityEngine.UI;
using System.IO;
using System.Collections;

//SocialWorker使用


namespace SWorker
{
    public class SWorkerScript : MonoBehaviour
    {
        void Start (){

        }
        /// <summary>
        /// Twitter投稿
        /// </summary>
        public void OnPostTwitter ()
        {
            StartCoroutine (Share());
        }

        private IEnumerator Share()
        {
            // 画面をキャプチャ
            ScreenCapture.CaptureScreenshot ("screenShot.png");

            // キャプチャを保存するので1フレーム待つ
            yield return new WaitForEndOfFrame ();

            // シェアテキスト設定

            var text = "テスト\nhttp://google.com/\n#aaaa ";
            //var url = "http://google.com/";
            var imagePath = Application.persistentDataPath + "/screenShot.png";
            SocialWorker.PostTwitter (text, imagePath);

        }
    }
}

最後の行はサイトでは、

SocialWorker.PostTwitter(message, url, imagePath);


このようになっていましたが、何故かurlが表示されなかったので、
成功したソースのようになってしまいました。

どなたかAndroidの実装方法を知っている方おられませんでしょうか?

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • sakura_hana

    2017/12/18 14:17

    現状の質問では的確な回答が出来ません。 https://teratail.com/help/question-tips こちらのページを参照の上、質問を編集してください。

    キャンセル

  • Kw6ZG2sV

    2017/12/18 15:44

    すみません。修正しました。

    キャンセル

回答 1

0

Android 7.0以降では直接ファイルを取得することができなくなりました。
その影響かと思います。そのままのコードでAndroid6.0などで試してみてください。
問題なく動くと思います。

ちなみにこういうエラーが出ます。
同じエラーが出るかAndroid Device Monitorで確認してみてください。

10-06 15:00:16.061 E/Unity   (20619): AndroidJavaException: android.os.FileUriExposedException: file:///storage/emulated/0/Android/data/a/files/osumousan.png exposed beyond app through ClipData.Item.getUri()
10-06 15:00:16.061 E/Unity   (20619): android.os.FileUriExposedException: file:///storage/emulated/0/Android/data/a/files/osumousan.png exposed beyond app through ClipData.Item.getUri()
10-06 15:00:16.061 E/Unity   (20619):     at android.os.StrictMode.onFileUriExposed(StrictMode.java:1958)
10-06 15:00:16.061 E/Unity   (20619):     at android.net.Uri.checkFileUriExposed(Uri.java:2348)
10-06 15:00:16.061 E/Unity   (20619):     at android.content.ClipData.prepareToLeaveProcess(ClipData.java:941)
10-06 15:00:16.061 E/Unity   (20619):     at android.content.Intent.prepareToLeaveProcess(Intent.java:9735)
10-06 15:00:16.061 E/Unity   (20619):     at android.content.Intent.prepareToLeaveProcess(Intent.java:9741)
10-06 15:00:16.061 E/Unity   (20619):     at android.content.Intent.prepareToLeaveProcess(Intent.java:9720)
10-06 15:00:16.061 E/Unity   (20619):     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1609)
10-06 15:00:16.061 E/Unity   (20619):     at android.app.Activity.startActivityForResult(Activity.java:4472)
10-06 15:00:16.061 E/Unity   (20619):     at android.app.Activity.startActivityForResult(Activity.java:4430)
10-06 15:00:16.061 E/Unity   (20619):     at android.app.Activity.startActivity(Acti

解決策

僕は、プラグインを購入しそれを使っています。
シェア機能以外も色々使えて安いのでおすすめです。

▼Cross Platform Native Plugins - Ultra Pack
https://assetstore.unity.com/packages/tools/integration/cross-platform-native-plugins-ultra-pack-31086

Twitterシェアのコードサンプルです。

    // Create share sheet
    TwitterShareComposer _composer    = new TwitterShareComposer();
    _composer.Text                    = m_shareMessage;
    _composer.URL                    = m_shareURL;

    // Show composer
    NPBinding.Sharing.ShowView(_composer, FinishedSharing); 

※ツイート完了のコールバックを受け取れますが、完了、キャンセル、エラーの判定ができません。それがちょっと残念な点です。それ以外は分かりやすくて使いやすいです。
API Documentation

※現在、一部のネイティブAPIの使用でクラッシュします。
もし、クラッシュする場合はTarget API LevelをAutomaticからAndroid 7.1にしてください。
それで解決するはずです。

イメージ説明

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/18 15:47

    40.00$は私には少し高めですね。汗
    できれば無料でどうにかして実装したい派でして。。
    ですが、とても有益な情報をありがとうございます!
    どうしても実装できなかったら参考にさせていただきます!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.75%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • C#

    6542questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Unity

    3569questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • Unity2D

    756questions