我已经在我的应用程序中成功实现了Apple iOS IAP并在沙箱中进行了测试.效果很好.
我担心用户可以用IAP购买东西,将其下载到我的应用程序中,然后向Apple投诉并获得退款.没有明显的退款方式报告给我的应用程序.它们是否被排除在"恢复"操作期间收到的产品列表之外?是否有一些未记录的交易类型会在退款时在我的SKPaymentTransactionObserver中异步显示?
现在我的运营假设我需要在执行恢复之前删除用户的IAP事务,并且退回的任何内容都不会出现在已恢复的事务列表中.这是正确的方法吗?有没有办法在沙箱中测试这个?
有没有人在生产环境中看到过退款并且可以解释它们是如何工作的?
我再次犯了使用最新的Android SDK /工具更新Eclipse的错误,并使它变得无用.
在Mac上运行Eclipse.
当我尝试创建AVD时,它告诉我"无法找到ABI armeabi的userdata.img文件".我已经阅读了所有类似的问题,告诉我去运行/运行配置,并确保我下载了最新的"ARM EABI v7a系统映像".我做到了.我重新启动了我的机器.仍然没有快乐.
FWIW我不是想创建一个4.x模拟器; 只是2.3.3.更新:我可以成功创建一个2.2模拟器,其中包含与我尝试2.3.3相同的所有参数(屏幕大小,存储卡大小,内存等).此外,我可以使用这些参数成功创建一个4.x模拟器.不是2.3.3.
我再次阅读了所有类似的问题.做我做的似乎解决了几个运行Win7的开发人员的问题.其他问题最终会有人说"我现在正在下载文件",但没有更新是否有效.在我的情况下,下载文件后,我发现行为没有变化.
谢谢你的帮助.
我有一个字节数组.每个字节的8位值是我想要的字符串中的字符.您可以将我的8位值视为ASCII,ANSI,UTF-8,ISO-8859-1,每日温度读数,距线上某点的距离(英寸)或任何您想要的距离.这是无关紧要的.
当我完成.我的String中位置N处的char应该与位置N处的字节具有相同的值.也就是说,高位8位应该是0,低位8位应该与源字节相同.
我使用什么编码只是简单地将字节映射到字符而没有变化?
我有一个显示的活动ListView.其中的每个项目ListView都LinearLayout包含一个项目WebView.列表中可能有数百个项目,每个项目的高度不同.
第一个问题是,当重新使用循环视图时getView(),新视图始终是原始视图的高度,即使我已设置了layout_heightfor LinearLayout和WebViewto wrap_content.
第二个问题是,getView()即使只有前五个或六个适合屏幕,似乎也会对列表中的每个项目进行调用.我在使用其他列表项类型时没有看到这个.例如,在另一个地方我是一个高度相同的自定义视图列表,我只看到getView()被调用最初适合屏幕的视图数量.
所以...我需要弄清楚如何强制回收WebViews来渲染他们的新内容,以便计算他们的高度而不是仅使用之前的高度.而且我想知道为什么系统在这种情况下要求我提供所有项目.
这是必备的代码片段:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ListView
android:id="@+id/topPane"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:dividerHeight="1.0px"
android:divider="#FFFFFF"
android:smoothScrollbar="false"
/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
行由以下内容构成:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<WebView
android:id="@+id/rowWebView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="0.0px"
android:scrollbars="none"
/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
这是我的适配器中的getView().HTML片段现在来自一系列字符串.
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
String item = (String) …Run Code Online (Sandbox Code Playgroud) android android-webview android-listview android-linearlayout
我有一个包含a的视图WKWebView.我的html内容是由我的应用程序生成的,所以我确定它永远不会比屏幕宽,所以我UIGestureRecognizer在其superview上使用s来对左右滑动作出反应.这很好用.
我还希望看到任何不在链接上的水龙头,这样我就可以决定我可能想要做些什么了.似乎WKWebView吸收所有水龙头.我试着询问它的手势识别器数组,以便我可以与它们建立一些合作,但无论我什么时候提出(即在创建WKWebView后,在用HTML文件加载之后,并且在通知它已经通知时)我都会得到nil 完成装载).这是有道理的,如果WKWebView没有使用UIGestureRecognizer机制,而只是看着点击而不是传递它们,如果事实证明它对它们不感兴趣.
有关获取WKWebView不必要的水龙头的任何想法?
我已经为我自己的公司做了几年的iOS开发.我现在需要为另一家公司工作.他们让我成为他们帐户下的管理员,我正盯着"开发证书"页面.回到我们刚开始进行iOS开发的糟糕时期,有人抱怨说,如果不搞砸,就不能拥有多个开发人员证书.
我不介意跳过一些箍来为新公司设置,但我不想冒险搞乱我自己的开发工作的主要配置.它是否真的像再次执行步骤请求和下载另一个开发证书一样简单,这两个可以并存?
我的OS X项目中有一些C++代码,因此可以分配一个数组:
C * p = new C[lengthHint + 2];
Run Code Online (Sandbox Code Playgroud)
这是一个模板类; C是unsigned short.lengthHint是1.这都是无关紧要的.我在运行时得到的错误是:
malloc: *** error for object 0x60800000c4f0: Invalid pointer dequeued from free list
*** set a breakpoint in malloc_error_break to debug
Run Code Online (Sandbox Code Playgroud)
它似乎malloc失败了,因为之前调用free释放了无效的东西.但似乎free当时会抱怨这一点.
显然,现在有成千上万的malloc/free和new/delete调用执行,这相同的代码运行而不会在iOS上运行的其他程序中的问题和OS X.我不知道如何处理调试这和我在寻找的建议.
我想用于启动屏幕的图像又高又窄。图像的大部分重要内容都在底部 2/3 处,因此如果要剪裁任何内容,我希望它剪裁顶部。
为了将其用作所有尺寸和方向设备的启动屏幕上的图像,我想做的是让宽度填满屏幕并将图像底部固定到屏幕底部。我尝试了“纵横比填充”和“纵横匹配”以及底部 (0) 或底部和左侧的约束(两者均为 0)的各种组合。
结果总是图像没有被缩放以适应宽度(它以全分辨率呈现,所以它离开左和/或右边缘),或者,如果正确缩放,图像垂直居中而不是对齐在屏幕底部。
这应该很简单,但我尽量不在我的应用程序中使用自动布局,并且不熟悉所有各种设置和约束的交互。最后,我希望图像缩放以填充设备的宽度,以及屏幕底部的图像底部。我想制作一个适用于所有设备的 XIB。看起来很简单。有什么建议?
我有一个最小的程序,只是让我使用Android设置两个首选项(一个int和一个字符串)PreferenceActivity.所以我有一个定义我的首选项的xml文件,以及一个扩展的活动PreferenceActivity.我的主要活动有一个选项菜单,可以启动我的偏好活动.所有这一切都很有效.我可以设置我的首选项,并在程序执行期间和之后保留值.
现在,在我的主要活动中,我想要检索这些首选项.应该很容易吧?这是我见过的每个样本的代码:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
int intSetting = prefs.getInt("intSetting", 0);
String strSetting = prefs.getString("strSetting", "");
Run Code Online (Sandbox Code Playgroud)
问题是,如果我在getInt()通话中断并且跳过,我的堆栈看起来像这样,如果我继续,应用程序将崩溃:
线程[<3>主要](已暂停)
ActivityThread.performLaunchActivity(ActivityThread $ ActivityRecord,Intent)行:2494
ActivityThread.handleLaunchActivity(ActivityThread $ ActivityRecord,Intent)行:2512
ActivityThread.access $ 2200(ActivityThread,ActivityThread $ ActivityRecord,Intent)行:119
ActivityThread $ H.handleMessage(Message)行:1863
ActivityThread $ H(Handler).dispatchMessage(Message)行:99 Looper.loop()行:123
ActivityThread.main(String [])行:4363 Method.invokeNative( Object,Object [],Class,Class [],Class,int,boolean)line:not available [native method] Method.invoke(Object,Object ...)line:521
ZygoteInit $ MethodAndArgsCaller.run()行:860 ZygoteInit.main(String [])行:618 NativeStart.main(String [])行:不可用[native method]
我尝试了传递给getDefaultSharedPreferences()的参数的变体,包括:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
Run Code Online (Sandbox Code Playgroud)
......以及可能在不同背景下的其他一些人(即从我的主要活动中获取偏好而不是从另一个活动中获取偏好而不是某个非活动类中的某个功能时.结果总是相同的.
我已经在网上阅读了十几篇有关此问题的问答帖,他们通过编写与我相同的代码解决了这个问题,所以我不指望有解决方案,但如果有人有任何想法,请告诉我.
android preferenceactivity android-sdk-2.1 sharedpreferences
我有一个通用类,需要能够克隆参数类型的对象.下面是一个非常简单的例子.编译器声称来自Object类型的clone()不可见.
public class GenericTest<T extends Cloneable>
{
T obj;
GenericTest(T t)
{
obj = t;
}
T getClone()
{
// "The method clone() from the type Object is not visible."
return (T) obj.clone();
}
}
Run Code Online (Sandbox Code Playgroud)
我宁愿不让调用者进行克隆,因为还有其他事情必须发生以维护对象的完整性.上面的代码只是问题的一个例子,没有我必须维护的与克隆对象相关的其他数据的噪音.
有没有办法绕过这个或者这是Java设计师考虑合理化其缺点的另一个例子,相当于没有?
我们有一个现有的应用程序,允许用户将文本复制到粘贴板.在可能的情况下,我们将HTML和纯文本放在剪贴板上,因为我们不知道用户可能粘贴的其他应用程序,并希望提供格式化(HTML)和未格式化的数据.
此功能在iOS 3和4中运行良好.但是一旦用户安装iOS 5,当他们将我们的应用程序中的文本粘贴到任何其他应用程序时,另一个应用程序将获取HTML文本但将其视为纯文本.因此,如果他们选择并复制H1标题,当他们粘贴到另一个应用程序时,而不是看到"这是一个标题",他们会看到"<h1>这是一个标题</ h1>".
请注意,现有代码在iOS 3和4中运行良好.在iOS 3,4和5之间我们的代码没有变化.
为了完整起见,这里是我们用来将我们的文本放在粘贴板上的代码,提供一个简单的字符串仅供参考:
NSString * plainText = @"A Big Heading\r\nA regular paragraph.";
NSString * htmlText = @"<h1>A Big Heading</h1><p>A regular paragraph.</p>";
UIPasteboard * pasteboard = [UIPasteboard generalPasteboard];
pasteboard.items = [NSArray arrayWithObject:
[NSDictionary dictionaryWithObjectsAndKeys:
plainText, @"public.utf8-plain-text", htmlText, @"public.html", nil]];
Run Code Online (Sandbox Code Playgroud)
显然,我的问题是"为什么iOS 5应用程序在请求纯文本时会获取HTML文本,而在iOS 4下运行的相同应用程序会获得纯文本?"
我有一个现有的SQL Server 2000数据库,它在文本列中存储文本的UTF-8表示.我没有选择修改列的类型,并且必须能够将来自C#程序的非ASCII Unicode数据存储到该列中.
这是代码:
sqlcmd.CommandText =
"INSERT INTO Notes " +
"(UserID, LocationID, Note) " +
"VALUES (" +
Note.UserId.ToString() + ", " +
Note.LocationID.ToString() + ", " +
"@note); " +
"SELECT CAST(SCOPE_IDENTITY() AS BIGINT) ";
SqlParameter noteparam = new SqlParameter( "@note", System.Data.SqlDbType.Text, int.MaxValue );
Run Code Online (Sandbox Code Playgroud)
在这一点上,我尝试了几种不同的方法将我的UTF-8数据放入参数中.例如:
// METHOD ONE
byte[] bytes = (byte[]) Encoding.UTF8.GetBytes( Note.Note );
char[] characters = bytes.Select( b => (char) b ).ToArray();
noteparam.Value = new String( characters );
Run Code Online (Sandbox Code Playgroud)
我也尝试过
// METHOD TWO
noteparam.Value = Note.Note; …Run Code Online (Sandbox Code Playgroud) 我正在使用 Sparkle 将更新分发到我的 OS X 应用程序。它对我的大多数用户运行良好,但我收到一小部分用户的报告,称“检查更新”已禁用。
我可以在网上找到的唯一其他示例来自从未启用“检查更新”的开发人员。就我而言,整个过程对大多数客户来说都很好;只有少数人正在经历这一点。
我没有做任何棘手的事情。我的设置与文档描述的完全一样 ( https://github.com/sparkle-project/Sparkle/wiki ),包括使用我的开发人员 ID 对框架进行签名。再一次,它适用于大多数。
现在遇到问题的用户正在运行 OS X 10.9.4,但我无法确认是否有 10.9.4 用户使用它。